在useEffect()函数中返回未定义的Redux存储状态

时间:2020-06-10 09:14:32

标签: javascript reactjs redux react-hooks state

我的Redux存储状态返回在useEffect挂钩中未定义。如果我删除[]中的空数组useEffect,那么我的Redux存储返回的true值却非常大,有时会无休止地执行!

 useEffect(() => {
    store.subscribe(() => {
      setNodeProperties({
        positionX: store.getState().schemaViewer.positionX,
        positionY: store.getState().schemaViewer.positionY,
      });
        console.log(nodeProperties);
    });
  }, []);

1 个答案:

答案 0 :(得分:0)

问题是setNodeProperties将使nodeProperties的更改排队,并且不会立即发生,因为它是异步的。因此,一旦nodeProperties发生更改,我将尝试产生副作用。您的组件中可以有多个useEffect钩子。

尝试以下操作:

useEffect(() => {
   console.log(nodeProperties);
}, [nodeProperties]);

这样,您将捕获nodeProperties的更改,然后仅运行日志记录步骤。建议阅读Using the Effect Hook

我希望这会有所帮助!