Внутренняя функция обратного вызова - всегда показывает начальное состояние - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть компонент с функциональной реакцией, в котором я также использую sortablejs.

const myComponent = () => {
  const [myData, setMyData] = useState([...some initial array data...]);
  const testMe = () => console.log(myData)
  useEffect(() => {
   const sortableContainer = document.querySelector(".slick-track");
   Sortable.create(sortableContainer, {
        onEnd: () => testMe() //onEnd is a callback from sortablejs api, that fires after we drag an item
   }, []);

И поэтому, независимо от того, как myData изменяется в течение срока службы компонента, внутри этого обратного вызова всегда отображаются начальные данные. Так возможно ли получить текущее значение myData внутри этого обратного вызова?

1 Ответ

0 голосов
/ 10 апреля 2019

Нашел ответ здесь https://stackoverflow.com/a/54528980/2810565

Мне просто нужно использовать prevState вот так:

const testMe = () => {
     setMyData(currentData => {
             console.log('Here is my current data', currentData); 
             return ([...prevState, //here add changes to state]);
      })
}
...