在进行轮询之前,状态不会更新

时间:2019-08-09 19:05:35

标签: javascript reactjs

下面是正在初始化的状态,并向下传递给子组件:

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

<Foo setRowCount={setRowCount} />

Foo:

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.current,直到进行重新提取之前,count.current = bar.length才被更新

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

1 个答案:

答案 0 :(得分:1)

UseEffect 在状态更改时运行。您正在使用useRef进行计数。 useRef 用于需要变量或dom引用但不需要任何rerender的情况。因此,如果您需要重新渲染并需要在更改状态后调用 useEffect 。然后使用useState。

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