javascript - React 状态在其分配的变量发生变化时发生变化
问题描述
我被 React 的一个奇怪问题困住了。
this.state={
testState: { testValue: "Test State" }
}
testFn = () => {
let a;
a = this.state.testState
a.testValue = "Debugging is awesome";
console.log(this.state.testState)
}
如果我对分配的变量进行了任何更改a
,那么它也会反映在状态中。
我在控制台中得到的是,
{testValue: "Debugging is awesome"}
.
任何帮助都将是可观的
编辑:
我不想改变状态。我必须在a
不改变状态的情况下进行修改。我怎样才能做到这一点?
解决方案
状态会发生变化,因为您的变量a
包含对 的引用testState
。这是一个无操作。你不应该直接改变它,只使用setState
react 提供的功能。
this.setState({ testState: { testValue: "Debugging is awesome" } });
如果您不想更改状态,可以使用扩展运算符:
let a = { ...this.state.testState };
推荐阅读
- r - 如何打印存在于一个数据框中并从另一个 r 中丢失的观察结果?
- sql - Amazon Athena 支持 SQL 查询以计算少数表的行数
- c++ - std::count 处的错误(无转换错误)
- python - Python - Tkinter ...无法更新GUI状态栏->单击按钮时我想更新消息2次
- c# - AspNet Core Autofac 处理我的 DbContext,即使它注册为 SingleInstance
- azure - 如何将 Azure WebJob 设置为每 N 小时运行一次
- python - 在 python 中使用 exec() 单元测试文件时,在 0.000 秒内运行 0 次测试
- google-cloud-platform - 如何使谷歌云存储中的对象打开而不是下载?
- excel - VBA Excel if 语句用于删除 ID 之类的形状
- forms - Bootstrap 4 text-left 类奇怪的行为