【发布时间】:2021-03-21 19:20:32
【问题描述】:
我有一个 Master 组件,其中包含多个 Child 组件。子状态保存在 Master 中。孩子获得的第一个状态是,FORM_LOADED。然后我的 Master 组件中有以下代码。
const Master = (props) => {
const [formStates, setFormStates] = useState()
useEffect(() => {
setFormStates({...formStates, Master: "FORM_LOADED"})
},[])
render (
<>
<Child view="Model1" formStates={formStates} setFormStates={setFormStates} />
<Child view="Model2" formStates={formStates} setFormStates={setFormStates} />
<pre>{JSON.stringify(formStates, undefined, 4)}</pre>
</>
)
}
const Child = (props) => {
useEffect(() => {
props.setFormStates({...props.formStates, [props.view]: "FORM_LOADED"})
}, [])
render (
<p>{props.view}</p>
)
}
我的问题是状态变量formStates 总是得到:
{
Master: "FORM_LOADED",
Model2: "FORM_LOADED"
}
Model1 不会出现在formStates 中。如果我添加更多子组件,则只有最后一个组件会反映在formStates 中。如何将 Model1 发送到 formStates?
【问题讨论】: