背靠背 useState 不更新第一个状态,只更新第二个状态

布拉西

我试图有一个运行 setState 两次的通用函数,但是,第一个 setState 不会更新。有没有办法绕过它?或者如何解决这个问题?

家长

const [data, setData] = useState({});
const updateData = (key, value) => {
  console.log(key, value);
  setData({ ...data, [key]: value });
};
...
 <div>
    Num 1: {data.num1}, Num2: {data.num2}
 </div>
 <Child updateData={updateData} />

孩子

const { updateData } = props;
const onClick = () => {
  updateData("num1", 1);
  updateData("num2", 2);
};
return <button onClick={onClick}> Click here </button>

console.log 返回两个被调用的值,但只有 1 个值被更新

代码沙盒示例在这里

(经过一些测试,即使在同一个父函数中调用setData它们,如果调用两次,它仍然不起作用(参见 Simplify.js)

某些表演

虽然您可以使用回调,以便参数包含当前更新的状态,包括已运行但在重新渲染发生之前的先前状态设置器:

const updateData = (key, value) => {
  setData(data => ({ ...data, [key]: value }));
};

如果data变量中可能的属性数量有限,请考虑使用单独的状态:

const [num1, setNum1] = useState(0);
const [num2, setNum2] = useState(0);
const onClick = () => {
  setNum1(num1 + 1);
  setNum2(num2 + 2);
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在孩子的第一个渲染useEffect上对具有旧状态的钩子useState进行反应

jQuery:动画同时发生,而不是通过.each()迭代进行背靠背

状态不是通过useState更新

react中的useState不更新状态对象

在多个锁中,当第一个线程已锁定至第一个任务时,如何使第二个线程不处于空闲状态而转而锁定至下一个任务?

更新useState而不插入另一个对象

如何在一个函数中使用两个useState,以便第二个useState可以使用第一个更新的useState?

Android动画在不同元素上背靠背

scala-spark:背靠背点击

当第一个标签处于活动状态时,第二个则不起作用

多次背靠背boost :: asio async_send_to调用导致缓冲区溢出

RecyclerView 在第二个按钮而不是第一个按钮上更新

WebClient 中的 C# 背靠背请求

只取满足第二个条件的第一个

我收到此错误:“来自 useState() 和 useReducer() Hooks 的状态更新不支持第二个回调...”当我更改状态时

反应:页面未重定向并获得警告:来自 useState() 和 useReducer() 钩子的状态更新不支持第二个回调参数

我如何告诉编译器/CPU 在内核空间的代码中背靠背执行指令?

ReactJS:第一个 useEffect 在第二个被触发之前不会更新状态

反应 useState 不更新状态

在 R 中使用 ggplot2 的背靠背条形图

是否可以在循环中背靠背运行两个 sql 插入?

useState 只在第二个 onClick 发送 props,在第一个 onClick 有一个字符串,为什么?

为什么 setState 回调会抛出错误:“来自 useState() 和 useReducer() 钩子的状态更新不支持第二个回调参数......”

useState 在第二次点击时更新状态

如何進行僅過濾掉中間沒有任何其他值的背靠背值的查詢?

保持雙頭背靠背的排序算法

UseQuery graphql -> useState with useEffect 这样我就可以运行第二个 useEffect 来设置更多状态

SQL from 子句中的背靠背表引用是什么意思

如何在没有字符串的python中添加背靠背零?