javascript - (反应) this.setState(current=>--current.number) 有效,但 this.setState(current=>current.number+1) 无效
问题描述
class App extends React.Component{
state = {
number:0
};
ADD = ()=>{
this.setState(current=>current.number+1)
};
MINUS = ()=>{
this.setState(current=>--current.number);
};
render(){
return(
<div>
<h1>Number is: {this.state.number}</h1>
<button onClick={this.ADD}>Add</button>
<button onClick={this.MINUS}>Minus</button>
</div>
);
}
}
上面的代码是使用的类组件ReactDOM.render(<App/>,docment.querySelector('#root'));
current=>--current.number
效果很好但current=>current.number-1
不起作用
我分不清两者的区别
另外,我想知道setState
当它foo
作为参数时使用什么方法this.setState(foo)
解决方案
我做了一些小改动,它的工作原理
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {
number: 0
};
}
ADD() {
this.setState(prev =>({number: prev.number + 1}))
}
MINUS() {
this.setState(prev =>({number: prev.number - 1}));
}
render() {
return (
<div >
<h1> Number is: {
this.state.number
}
</h1>
<button onClick = {
()=>this.ADD()
} > Add < /button>
<button onClick = {
()=>this.MINUS()
} > Minus </button>
</div>
);
}
}
ReactDOM.render(
<Counter/> ,
document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="app"></div>
推荐阅读
- r - 选项卡功能不再适用于 r 代码,它都出现在每一页上
- reactjs - React:我可以通过函数调用设置类名吗
- node.js - Dockerizing节点js护照身份验证
- python - Django 忽略过滤器
- scala - Group list of tuples by first element, get average of second element
- python - 有没有办法用 python 请求捕获下载令牌?
- java - 在运行时的现有类中生成代码 (Java)
- c++ - c++: parse a string that contains an expression "access to the multidimensinal array"
- python - 使用python将txt数据导入excel
- html - 修复图像在引导程序 4 中缩小