javascript - 在轮询发生之前状态不会更新
问题描述
下面是正在初始化的状态,并被传递到子组件中:
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.current
count.current = bar.length
我不确定是因为我使用useEffect
不正确还是有其他疏忽。如果我可以提供更多详细信息,请告诉我。
解决方案
UseEffect在状态改变时运行。您正在将 useRef 用于 count 。当你需要一个变量或 dom 引用但你不需要任何重新渲染时使用useRef 。因此,如果您需要任何重新渲染并需要在更改状态后调用useEffect 。然后使用 useState。
const [count, setCount] = React.useState<number>(1);
推荐阅读
- laravel - Laravel 5.5 错误 405(不允许方法)XHR PUT METHOD 现在在 Azure 服务器上工作
- bash - 计算 IF 进程,有什么问题?
- sql-server - 仅当所有订单详细信息都在列表中时才返回所有订单的 SQL 查询
- android - 如何在不抬起手指(Action.UP 或 Cancel)的情况下撤销 `requestDisallowInterceptTouchEvent(false)`?
- javascript - 确定第一个和最后两个帖子
- java - 为什么超类方法可以在超类方法中声明不异常?
- c# - 使用互操作程序集 c# 在 Word 中的现有文本范围中插入 RTF 内容
- python-3.x - 如何检查 find_element_by_partial_link_text 的父元素
- playframework - 如何在 Prod 服务器中部署播放应用程序(v.2.6)?
- html - 使用angular4显示来自json数组的数据