reactjs - 从变量和状态中获取旧值
问题描述
嗨,我正在使用 firebase 和 react 钩子,我看到我的状态变旧或未更新函数内部的变量(guests / foreUpdate)的问题
//table that update the data
onRowUpdate: (newData, oldData) =>
new Promise((resolve, reject) => {
setTimeout(() => {
//the upodated values are here
setGuests([...dataUpdate]);
foreUpdate=false;
firebase.database().ref().update(updates);
resolve();
}, 500);
}),
未更新的代码是:
const changeDbChangesEvents = () => {
commentsRef.on("child_changed", (data) => {
if (guests && foreUpdate) { // 2 values arent updated. foreUpdate - is simple varibale not state
const cloneGuests = _.cloneDeep(guests);
setGuests(cloneGuests);
}
foreUpdate=true;
});
解决方案
看起来您正在使用旧状态,因为您一个接一个地执行代码。尝试将您的数据库更改代码变成useEffect
这样:
useEffect(() => {
firebase.database().ref().update(updates);
}, [updates]);
这可确保您仅使用最新值运行更新。
推荐阅读
- vba - 循环仅在第一个实例上更改类别
- kubernetes - 裸机设置上的 Kubeflow 设置?
- python-3.x - 如何解释 LinearSegmentedColormap 上的文档
- c++ - 当我们有纯虚函数雇佣关系时,如何启动一个对象?
- ruby-on-rails - Rubocop:在 void 上下文中使用的文字。[Lint/Void]
- google-bigquery - BigQuery:多个查询 SQL 查询在同一条语句中
- jquery - 单击搜索按钮后如何在控制台上获取元素ID,使用jquery
- html - 最后看不到滚动块
- youtube-dl - youtube-dl 脚本的 --playlist-start 选项不起作用
- java - MinAbsSum:给定整数数组,找到元素的最低绝对和