下面是正在初始化的状态,并向下传递给子组件:
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
或是否存在其他疏忽。如果可以提供更多详细信息,请告诉我。
答案 0 :(得分:1)
UseEffect 在状态更改时运行。您正在使用useRef进行计数。 useRef 用于需要变量或dom引用但不需要任何rerender的情况。因此,如果您需要重新渲染并需要在更改状态后调用 useEffect 。然后使用useState。
const [count, setCount] = React.useState<number>(1);