javascript - In React 16.9, directly updating the state without setState updates UI
问题描述
export default class Concepts extends React.Component {
constructor(props) {
super(props);
this.state = {
user: {
name: 'Mayank'
}
}
}
changeUserData = () => {
this.state.user.name = "Anshul";
}
render() {
return (
<div>
<h1>{this.state.user.name}</h1><br></br>
<input type="button" onClick={this.changeUserData} value="Click To Change" />
</div>
)
}
}
Even without using "setState" in React 16.9, the UI is updating.
In React 16.8, we need to call "forceUpdate", is it a problem on my side.
解决方案
您应该避免直接改变状态,而是使用setState
或使用钩子。
const [user, changeUser] = React.useState({ name: 'Roy' })
//...
changeUser(user => ({ ...user, name: 'David' }))}
推荐阅读
- docker - 从另一个容器访问 VPN 容器上的客户端
- jquery-ui-sortable - 我可以将 ngx-bootstrap 可排序组件与 formArray 一起使用吗?
- java - 无法在 Eclipse 中使用 Maven 将 Java 源代码级别更改为 1.7
- rabbitmq - 没有消费者 RabbitMQ
- javascript - 将空格分隔的坐标字符串转换为 JavaScript 对象数组
- bluetooth - STM32MP1 上的 Bluez 连接
- python - 如何让滚动条在 tkinter 上与框架上的对象一起工作?
- python - 使用 succes 消息混合,Django 消息无法正常工作
- android - java.lang.IllegalStateException: 必须在调用 loadAd 之前设置广告尺寸和广告单元 ID。?
- ngxs - NXGS 警告“在 '@ngxs/store' 中找不到导出 'StateContext'”