说明
在React中,状态被认为是只读的,我们应该始终替换它而不是直接修改它,直接修改状态不能引发视图更新。
useState修改状态的规则:状态不可变。所谓不可变,指的是要用新值替换老值,而不能直接修改。
- 对于简单类型,应该用替换的方式;
- 对于对象类型的状态变量,也是遵循同样的规则,应该始终传给set方法一个全新的对象来进行修改。
示例
简单数据类型举例:直接修改状态变量的值,视图不会更新
点击按钮,count的值会变化,但不会更新到视图:
代码修改为如下,状态变量的改变就可以更新到视图了:
修改对象状态
错误的写法:直接修改对象的属性
只显示了初始值,点击按钮,名字也不会改变:
正确的写法:传入一个全新的对象用作替换
开始显示:
点击按钮以后显示: