【发布时间】:2021-06-24 08:05:49
【问题描述】:
我的代码运行良好,但我不断收到此警告消息“不要直接改变状态。使用 setState()”。我尝试将 setState 用于 currentNumber 和输入,如下所示:
this.setState({currentNumber: this.state.currentNumber.toString() + numberbtn.toString()})
this.setState({inputs: this.state.currentNumber})
但它会在第二次单击而不是第一次单击时显示输出。 下面是对我有用但显示警告消息的完整代码。
import React from 'react'
import DisplayComponent from './components/DisplayComponent'
class App extends React.Component {
constructor(props){
super(props);
this.state = {
inputs: '',
result: '',
currentNumber: '',
}
}
inputNumber = numberbtn => {
this.state.currentNumber = this.state.currentNumber.toString() + numberbtn.toString()
this.state.inputs = this.state.currentNumber
this.setState({result: this.state.inputs})
}
render() {
return (
<div className = "container">
<div className = "display">
<DisplayComponent result={this.state.result}/>
</div>
<button onClick={() =>this.inputNumber(1)}>1</button>
<button onClick={() =>this.inputNumber(2)}>2</button>
</div>
)
}
}
export default App
【问题讨论】:
-
currentNumber、inputs和result的用途是什么?看起来它们都存储相同的值。为什么? -
我正在尝试构建一个计算器。所以当点击数字按钮时,数字存储在当前数字中,当前数字会将值传递给输入。当您点击一个运算符时,前一个数字将具有当前数字的值,当前数字将为空。输入将存储数字和运算符。结果将获得输入的值并将其显示在屏幕上。我刚刚在这里发布了部分代码。现在有意义吗?
标签: reactjs