【发布时间】:2016-07-27 05:31:54
【问题描述】:
在onChange 期间更改input 的值时遇到问题,
handleChange(event){
this.setState({
value: event.target.value
});
}
render(){
return(
<div className={s.root}>
<div className={s.container}>
<label className={s.captionLabel}>{this.props.caption}</label>
<input className={this.props.modal? s.modalTextInput : s.textInput} onChange={this.handleChange} value={this.state.value} ref="inp" disabled={!this.state.isChecked} type="text" />
<label className={s.unitLabel}>{this.props.unit}</label>
<input className={s.boxInput} type="checkbox" checked={this.state.isChecked} onChange={this.toggleChange.bind(this)}/>
</div>
</div>
)
}
我仍然收到错误消息
未捕获的类型错误:无法读取未定义的属性“setState”
我尝试了 onChange={this.handleChange.bind(this} ,之后我没有收到此错误消息,但我无法更改输入值。在event.target.value 的摘录中,我得到的值类似于 1,01,02 等等....但是值不再改变(我只是不能覆盖 input 中的值)。那么有什么提示我该怎么做?
【问题讨论】:
-
你的构造函数看起来如何?它应该调用 super,绑定你更改处理程序并将 this.state 设置为某个初始值。
-
如果您对组件使用
es6 class方法,则必须手动bind this。关于输入值,如果您在渲染时控制台记录this.state.value并在输入中输入一些内容,将记录什么值? -
@Tushar Khatiwada 当我手动绑定它时,我无法覆盖输入。所以我的渲染不运行。我的输入中有默认的零值,我无法删除或覆盖它们。 @Scarysize 在构造函数中我有
super(props)、value: '0'和this.handleChange=this.handleChange.bind(this) -
@LukášUnzeitig 试试这个:在你的
handleChange(event)评论this.setState并写console.log(event)。输入任何内容,然后查看调试器控制台中的日志。 -
@TusharKhatiwada 这是一条长消息:D -
Object { dispatchConfig: Object, _targetInst: Object, nativeEvent: input, type: "change", target: <input.Inputs_modalTextInput_2d6>, currentTarget: <input.Inputs_modalTextInput_2d6>, eventPhase: 3, bubbles: true, cancelable: false, timeStamp: 1469599236447, 6 and next… }我到底在寻找什么?