react中this.setState
到底能不能进行运算?我按照react 小书的教程写但是发现结果不对。。。
我这里的count
每次点击都会+2,相当于是最后一个this.setState
把前面的都覆盖了。
?
react中this.setState
到底能不能进行运算?我按照react 小书的教程写但是发现结果不对。。。
我这里的count
每次点击都会+2,相当于是最后一个this.setState
把前面的都覆盖了。
?
this.setState 是异步的, 需要在回调函数里面去取值
ES6
this.setState({
count: 0
}, () => {
console.log(this.state.count);
})
ES5
this.setState({
count: 0
}, function(){
console.log(this.state.count);
})
state应该写在constructor里边啊,你写在里边试试?(PS:感觉这种场景好奇怪啊)
constructor(){
super();
this.state ={
count: true;
}
}
首先是可以计算的,
其次:
当你使用 setState()
时 会自动调用 render()
方法重新渲染组件.
就是说在你点击时 count
先变成+1 然后再次变成 +2 .
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
setState
是异步的,也就是说:并不是setState
被调用后state
就会立即改变,它只是保证在之后的某刻会被改变。因此,你的第2,3个setState
中的this.state.count
依旧是undefined
。另外,为了优化性能,在一定时间内像这种传对象字面量方式调用
setState
是会被批量处理的,前两个setState
会被合并到第三个调用中,也就是说只有第三个会起作用。为了达到你原来代码的意图,你应该使用
updater
函数