我有一个使用钩子的应用程序,该钩子使用state
和setState
作为变量名,希望不要太混乱。我尝试调用setState(newState)
,然后在我检查旋转时随后运行我的rotate()
函数,但它仍然slots
为空。好像它没有及时更新。我需要将其作为回调运行吗? setState
到setState
完成时是否还没有完成?
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
的了解缺少什么?