Javascript 反应-输入字段上的设置状态不工作

Javascript 反应-输入字段上的设置状态不工作,javascript,reactjs,Javascript,Reactjs,我似乎错过了什么,为什么国家不为我工作?! 如果我将初始状态拉入文本输入字段的值以使其受控,则setState对我不起作用…我做错了什么 class Module extends Component { constructor() { super() this.state = { text: 'text' } th

我似乎错过了什么,为什么国家不为我工作?! 如果我将初始状态拉入文本输入字段的值以使其受控,则setState对我不起作用…我做错了什么

      class Module extends Component {
          constructor() {
              super()

              this.state = {
                  text: 'text'
              }

              this.handleInputChange = this.handleInputChange.bind(this)
          }

          handleInputChange(event) {
              console.log('handle input change')
              this.setState = ({
                  text: 'new state: ' + event.target.value
              })
              console.log(event.target.value)
          }

          render() {
              return (
                  <div>
                      <input
                          type="text"
                          value={ this.state.text }
                          onChange={ this.handleInputChange }
                      />
                  </div>
              )
          }
      }

      export default Module
类模块扩展组件{
构造函数(){
超级()
此.state={
文本:“文本”
}
this.handleInputChange=this.handleInputChange.bind(this)
}
handleInputChange(事件){
console.log('handle input change')
this.setState=({
文本:“新状态:”+event.target.value
})
console.log(event.target.value)
}
render(){
返回(
)
}
}
导出默认模块

因为
setState
是异步的。但幸运的是,在方法调用中有一个回调参数,您可以使用它来获取如下值

    this.setState({
        text: 'new state: ' + event.target.value
    }, () => {
        console.log(text)
    })
    const saveValue = event.target.value;
    this.setState({
        text: 'new state: ' + saveValue 
    });
    console.log(saveValue);
顺便说一句,您没有为
setState
分配任何内容,这是一个方法调用。 此外,由于
事件
是React中的合成事件,因此必须将当前目标存储在变量中,以避免丢失事件,例如

    this.setState({
        text: 'new state: ' + event.target.value
    }, () => {
        console.log(text)
    })
    const saveValue = event.target.value;
    this.setState({
        text: 'new state: ' + saveValue 
    });
    console.log(saveValue);

为什么设置状态中有“新状态”?每次按键或更改时都会调用onChange函数,因此您不应该在setState函数中添加自己的文本。如果要使用ES6,可以将onChange调用更改为:

(event) => this.handleInputChange(event.target.value)
以及handleInput函数,用于:

handleInputChange(value) {
  this.setState({
    text: value
  })
}

如果您需要在输入文本之前输入“new state:”字符串,则将其放在输入文本之前的范围内。

存储更改的值,
setState()
是异步的

handleInputChange(event) {
  const myValue = event.target.value;
  this.setState({
    text: myValue
  })
}

这只是一个打字错误
this.setState=({
应该是函数调用而不是赋值
this.setState({
太棒了!非常感谢!我想我快疯了…休息一下吧,我猜这个问题与
设置状态本身的异步性质无关。OP不会手动读取状态。@YuryTarabanko是的,我意识到了。这就是为什么答案还有第二部分。这个答案没有解决原始问题,并且包含同样的打字错误。