reactjs - React JS 等待 useEffect 完成所有渲染
问题描述
我的反应应用程序中有下一种情况。我有一个从另一个组件设置的状态: const [test, setTest] = useState();
,当设置此状态时,它会创建一些渲染,例如:
- 第一次渲染
test = first value
- 第二次渲染
test = first value
- 最后渲染
test = the expected value
。
我想要做的是只读取 useEffect 钩子中的最后一个测试值,例如:
useEffect(() => {
// here i need to avoid the previous values of test and to display only the last
console.log(test);
}, [test]);
问题:如何在 useEffect 内部避免以前的值test
并只显示最后一个?
解决方案
您可以在 uesEffect 之外初始化一个计数器变量,并在每次运行 useEffect 时递增它。一旦满足所需条件(例如,if(counter===2)),然后运行console.log。
所以
let counter = 0;
useEffect(()=>{
counter++;
if(counter==2){
console.log(test)
}
},[test])
推荐阅读
- azure - 使用 Application Insights 跟踪和聚合单个用户路径
- sql - 映射多对多项目
- swift - Swift:写入对象后领域数组为空
- python - Django:authtools 在创建用户时会创建用户配置文件
- javascript - Angular:错误没有指令,“exportAs”设置为“ngForm”
- javascript - 根据 XML 视图中的条件绑定数据。SAPUI5
- ruby-on-rails - Ruby on Rails MVC
- python - 如何在 OpenShift 上运行 InstaBot.py?
- javascript - Javacsript - 使用 2 个变量键访问嵌套对象值(用于 ReactJS setState())
- java - 更改传递值java的值