无法使用反应中的状态增加计数
Not able to increment count using state in react
以下是我的代码,我在其中尝试使用单击按钮来增加计数,但它没有更新值。虽然我在控制台中也没有收到任何错误。让我知道我在这里做错了什么。
JS代码-
class App1 extends React.Component {
constructor(props) {
super(props)
this.state = {
count: 0
}
this.setCount = this.setCount.bind(this)
}
setCount() {
this.setState((state) => {
count: state.count + 1
})
}
render() {
return (
<>
<hr />
<h3>test increment</h3>
<button onClick={this.setCount}>Click</button>
<p>{this.state.count}</p>
</>
)
}
}
ReactDOM.render(<App1 />, document.getElementById('root'))
Codepen - https://codepen.io/anon/pen/LaMOEp
你什么都没有 returning。您可以在侧回调中使用 return
。
setCount() {
this.setState((state) => {
return {count: state.count + 1}
}))
}
或者您可以避免使用 return
在 =>
之后将您的 return 值包装在 ()
中
setCount() {
this.setState((state) => ({
count: state.count + 1
}))
}
问题出在setCount()
,你漏掉了一对括号!这是正确的版本:
setCount() {
this.setState((state) => ({
count: state.count + 1
}));
}
还有两个括号!一个在 =>
之后,一个在 this.setState()
调用之后。
this.setState((state) => {
count: state.count + 1
})
在上面的代码中,花括号是函数体,count:
是一个line label,state.count + 1
是一个永远不会用到的表达式。如果要使用简洁的箭头函数语法 return 对象文字,则需要将对象括在括号中:
this.setState((state) => ({
count: state.count + 1
}))
以下是我的代码,我在其中尝试使用单击按钮来增加计数,但它没有更新值。虽然我在控制台中也没有收到任何错误。让我知道我在这里做错了什么。
JS代码-
class App1 extends React.Component {
constructor(props) {
super(props)
this.state = {
count: 0
}
this.setCount = this.setCount.bind(this)
}
setCount() {
this.setState((state) => {
count: state.count + 1
})
}
render() {
return (
<>
<hr />
<h3>test increment</h3>
<button onClick={this.setCount}>Click</button>
<p>{this.state.count}</p>
</>
)
}
}
ReactDOM.render(<App1 />, document.getElementById('root'))
Codepen - https://codepen.io/anon/pen/LaMOEp
你什么都没有 returning。您可以在侧回调中使用 return
。
setCount() {
this.setState((state) => {
return {count: state.count + 1}
}))
}
或者您可以避免使用 return
在 =>
()
中
setCount() {
this.setState((state) => ({
count: state.count + 1
}))
}
问题出在setCount()
,你漏掉了一对括号!这是正确的版本:
setCount() {
this.setState((state) => ({
count: state.count + 1
}));
}
还有两个括号!一个在 =>
之后,一个在 this.setState()
调用之后。
this.setState((state) => {
count: state.count + 1
})
在上面的代码中,花括号是函数体,count:
是一个line label,state.count + 1
是一个永远不会用到的表达式。如果要使用简洁的箭头函数语法 return 对象文字,则需要将对象括在括号中:
this.setState((state) => ({
count: state.count + 1
}))