首页 > 解决方案 > 在轮询发生之前状态不会更新

问题描述

下面是正在初始化的状态,并被传递到子组件中:

const [rowCount, setRowCount] = React.useState<number>(1);

<Foo setRowCount={setRowCount} />

福:

const Foo = (props) => {
  const { setRowCount } = props;

  const count = React.useRef<number>(0);

  useEffect(() => {
      setRowCount(rowCount.current);
  }, [count.current]);

  const bars: Bar[] = A.map(( bar ) => bar);

  count.current = bar.length;
}

我遇到的问题是,尽管设置为在线rowCount,但直到发生重新获取才更新rowCount.currentcount.current = bar.length

我不确定是因为我使用useEffect不正确还是有其他疏忽。如果我可以提供更多详细信息,请告诉我。

标签: javascriptreactjs

解决方案


UseEffect在状态改变时运行。您正在将 useRef 用于 count 。当你需要一个变量或 dom 引用但你不需要任何重新渲染时使用useRef 。因此,如果您需要任何重新渲染并需要在更改状态后调用useEffect 。然后使用 useState。

const [count, setCount] = React.useState<number>(1);


推荐阅读