【发布时间】:2018-07-10 02:08:40
【问题描述】:
我在 React 中遇到了一个奇怪的问题。我想我可能还没有完全掌握 React 的工作原理,非常感谢您的帮助。
请在下面找到我的 React 组件:
class myComponent extends Component {
state = {
value: ''
}
updateValue = e => {
this.setState({
value: e.target.value
})
}
render() {
return (
<form>
<input type="text" onChange={this.updateValue} defaultValue={this.state.value} />
</form>
)
}
}
然后,现在如果我在文本字段中输入内容,我将收到以下警告和错误:
警告:出于性能原因,此合成事件会被重复使用。如果您看到这一点,则表示您正在访问已发布/无效合成事件上的属性 target。这设置为空。如果您必须保留原始合成事件,请使用 event.persist()。
未捕获的 TypeError:无法读取 null 的属性“值”
但如果我将 'updateValue' 方法更改为:
updateValue = e => {
const newValue = e.target.value
this.setState({
value: newValue
})
}
它可以正常工作。
【问题讨论】:
-
我不相信您作为“解决方案”提供的更改会产生任何影响,他们不可能有不同的行为。
-
I put the code in a sandbox, and I'm not seeing any such warnings in the console. 您能否更新您的示例代码以更好地适应您的实际代码?
-
您发布的代码不会导致该错误。
-
这太疯狂了。我只需要将我的方法更改为箭头函数即可使其正常工作。
标签: javascript reactjs