setState不会在同一函数中的函数调用之前更新状态

时间:2019-11-13 18:39:46

标签: javascript reactjs react-hooks setstate

我有一个使用钩子的应用程序,该钩子使用statesetState作为变量名,希望不要太混乱。我尝试调用setState(newState),然后在我检查旋转时随后运行我的rotate()函数,但它仍然slots为空。好像它没有及时更新。我需要将其作为回调运行吗? setStatesetState完成时是否还没有完成?

   const [ state, setState ] = useState({ manual: true, rings: [], slots: [] });
    const slotMap = {
      0: 288,
      1: 216,
      2: 144,
      3: 72,
      4: 360
  };

    useEffect(()=>{
      const newState = { ...state, slots: props.slots };
      console.log('DEGREES:');
      newState.slots.forEach(x => console.log(slotMap[x])); //works! 
      if(newState.slots !== undefined && props.apiHit === true ) {
        setState(newState);
        rotate();
      }

    }, [props.slots, props.apiHit]);

rotate =() => {
  console.log(state); 
}

输出:

{manual: true, rings: Array(3), slots: Array(0)}manual: truerings: (3) [{…}, {…}, {…}]slots: Array(0)length: 0__proto__: Array(0)__proto__: Object

我肯定有props.slots有数据。调用rotate时,似乎只是没有填充。我对setState的了解缺少什么?

0 个答案:

没有答案