Konwersję kodu z klasy do komponentu funkcjonalnego. Nie jestem pewien co do tego, jak przekształciłbym poniższy kod w funkcję haczyków.

  applyFilter = () => {
  const { filterLimit: value, lessThanOrGreaterThan } = this.state;
  const isLessThan = lessThanOrGreaterThan === "lessThan";

  // update instance variable
  this.state.datas = this.state.datas.map(v => {
    if (isLessThan ? v <= value : v >= value) return v;
    return 0;
  });

  this.setState(prevState => ({
    datas: this.state.datas,
  }));
  } 

Zgłaszałem używane zmienne jako haczyki w następujący sposób

const [filterLimit, setfilterLimit] = useState(100);
const [lessThanOrGreaterThan, setlessThanOrGreaterThan] = useState('lessThan');
const [datas, setDatas] = useState([12, 19, 3, 5, 2, 10])
0
tallpotato 21 listopad 2020, 15:55

1 odpowiedź

Najlepsza odpowiedź

Wygląda na to, że większość jest. Wygląda na to, że wystarczy zamienić odniesienia do stanu z definiującymi rekwizytami.

const [filterLimit, setfilterLimit] = useState(100);
const [lessThanOrGreaterThan, setlessThanOrGreaterThan] = useState('lessThan');
const [datas, setDatas] = useState([12, 19, 3, 5, 2, 10])

const applyFilter = () => {
    const isLessThan = lessThanOrGreaterThan === "lessThan";

    // update instance variable
    const newDatas = datas.map(v => {
    if (isLessThan ? v <= value : v >= value) return v;
        return 0;
    });

    setDatas(newDatas);
}
0
Emile 21 listopad 2020, 13:14