reactjs - 为什么重置事件不更新状态
问题描述
这里的方法 handleReset() 将计数器状态的每个值重置为零。但是状态没有得到更新。为什么会这样?
state={
counters:[
{id:1,value:3},
{id:2,value:7},
{id:3,value:6}
]
}
handleReset = () => {
const counters = this.state.counters.map(c => {
c.value = 0
return c
})
console.log(counters.value)
this.setState({ counters })
}
日志将值显示为零。但状态仍显示原始值
解决方案
您没有在 setState 中设置值计数器您必须将计数器设置为等于计数器
import React from 'react';
import ReactDOM from 'react-dom';
class App extends React.PureComponent {
constructor(props){
super(props);
this.state={
counters:[
{id:1,value:3},
{id:2,value:7},
{id:3,value:6}
]
}
this.handleReset = this.handleReset.bind(this);
}
handleReset = () => {
const counters = this.state.counters.map(c => {
c.value = 0
return c
})
this.setState({ counters:counters })
console.log("counters1",this.state.counters)
}
render() {
console.log("counters",this.state.counters)
return (
<div>
<button onClick={this.handleReset}> Reset</button>
</div>
);
}
}
ReactDOM.render(
<App />,
document.querySelector('my-app')
推荐阅读
- flutter - 当我运行'flutter run --release'或'flutter build ios'时,Runner.app的大小是400M,为什么这么大?
- javascript - javascript表格内容转换成数组结果很奇怪
- javascript - 无法在 Vue.js 中动态添加类
- python-3.x - Discord.py 图片发布
- typescript - 类型化函数可以递归访问对象属性吗?
- css - 闪亮的信息框宽度不适用
- dynamic - 在 Wolfram Mathematica 中使用纯函数作为坐标
- data-structures - 一棵既节省内存又节省磁盘空间的树?
- java - 使用 MongoDB Java 将新对象推送到现有文档的数组中
- amazon-s3 - 如何加密 Amazon S3 存储中的视频文件以进行视频流式传输?