javascript - React Hook setData 没有正确更新
问题描述
所以我的 setData 如下:
type Data = {
tempId: string,
...
};
const [data: Data, setData: Data] = useState(() => {
const data: Data = {
};
for (const [key, value] of formData) {
if (key !== 'tempId') {
data[key] = value;
}
}
return data;
});
后来我打电话
setData({tempId: 'some_id', ...data});
但是 tempId 显示为从未设置过并且为空。我不知道为什么会发生这种情况-有什么想法吗?
解决方案
useState 接受一个初始值,该值将是data
您示例中的值。你传递的函数不会像你想象的那样运行。您可能正在寻找这样的东西:
const [data, setDate] = useState();
const updateData = (formData) => {
let data = {}
for (const [key, value] of formData) {
if (key !== 'tempId') {
data[key] = value;
}
}
setData(data)
}
然后,而不是打电话给setData({tempId: 'some_id', ...data});
你updateData({tempId: 'some_id', ...data});
推荐阅读
- r - 如何从级别的成对组合生成数据框
- vb.net - 在 DataGridView 中的空白行后重置/增加编号
- python-3.x - 使用 argparse 运行 python3 脚本
- java - 验证签名 XADES 抛出 java.lang.ArrayIndexOutOfBoundsException: 0
- flutter - 在 Flutter 中获取没有 buildcontext 的类中的屏幕大小
- elasticsearch - 在 Elasticsearch 中使用 GET 请求进行查询时删除停用词
- elasticsearch - 在 K8 或 EKS 中监控入口流量的标准方法
- java - 如何只构建一个包含多个不同应用程序/子项目的 JAR 文件?
- sql - 如何返回开始日期和结束日期之间的记录
- javascript - 对于循环代码,每个循环在 x 轴上的间距加倍