我有一个简单的react组件,其形式相信可以控制一个输入:
import React from 'react';
export default class MyForm extends React.Component {
constructor(props) {
super(props);
this.state = {}
}
render() {
return (
<form className="add-support-staff-form">
<input name="name" type="text" value={this.state.name} onChange={this.onFieldChange('name').bind(this)}/>
</form>
)
}
onFieldChange(fieldName) {
return function (event) {
this.setState({[fieldName]: event.target.value});
}
}
}
export default MyForm;
运行我的应用程序时,出现以下警告:
警告:MyForm正在更改要控制的文本类型的不受控制的输入。输入元素不应从不受控制切换为受控制(反之亦然)。确定在组件的使用寿命中使用受控或非受控输入元素
我相信我的输入是有价值的,因此受到控制。我想知道我在做什么错?
我正在使用React 15.1.0
通常,只有当您在应用程序启动时不控制文件的值,并且在某些事件或某些函数被触发或状态改变后,现在尝试控制输入字段中的值时,才会发生这种情况。
首先是导致无法控制问题的转变,就是无法控制输入,然后再对其进行控制。
避免这种情况的最好方法是在组件的构造函数中为输入声明一些值。使输入元素从应用程序开始就具有价值。