无法正确更新父对象状态

时间:2020-03-11 07:42:10

标签: javascript reactjs react-native

我有多个子组件,需要在这些同级之间进行通信。我目前正在尝试什么:

父级具有对象状态,并将setMessageItem作为道具传递给所有子级:

const [messageItem, setMessageItem] = useState({})

孩子:

useEffect(() => {
    if(condition) {
        props.setMessageItem(prevState => ({...prevState, messageData}))
    ..}
    }
}[])

但是,只有一个孩子的数据达到此对象状态。当两个或两个以上的孩子试图同时更改父母的状态时,有什么办法可以使它起作用?

因此最终结果将是messageData将同时包含来自多个子级的数据。

1 个答案:

答案 0 :(得分:1)

实例化组件时,useEffect()将仅运行一次。如果您想像这样使用它,可以这样做:

useEffect(() => {
  props.setMessageItem(prevState => ({ ...prevState, messageData }));
}, [condition]);

然后它将在每次条件变化时触发。