用immer,use-immer在父组件中存值,部分代码如下:
在saveFormData函数中,value有值,
push后,createModelData.tableFormData里没有值.
错在哪里了?
import produce from'immer';
import { useImmer } from"use-immer";
export default () => {
... ...
const [createModelData, setCreateModelData] = useImmer({
tableFormData: [],
connectFormData: [],
polymerizeFormData: []
});
//子组件调用父组件函数,传了value值
const saveFormData = (value) => {
console.log(value) //有值
setCreateModelData(draft => {
draft.tableFormData.push(value);
});
console.log(createModelData.tableFormData) //无值
}
... ...
useImmer 在实现上用了useState
这里的更新流程跟直接使用 useState 没区别,而 useState 的更新是异步的(跟 class 的 setState 一致),所以在后面不会直接获取到最新的值。
所以你这里没有任何错误,是你没理解 useState 之类的更新流程。