【发布时间】:2018-11-14 03:54:18
【问题描述】:
我有一个简单的表格。如果我只有一个 onSubmit 事件处理程序,我的 inout 字段是只读的(我不想要)。当我向每个输入字段另外添加一个 onChange 事件处理程序时,它们不再是只读的。我的问题是:
- 除了 onSubmit 之外,我是否必须始终添加 onChange 以便输入字段在 React 中不是只读的
- 如果是这样,为什么?
-
或者我只是在我的示例代码中做错了什么?谢谢
class App extends React.Component { constructor(props){ super(props); this.state={ name:'' } this.testing=this.testing.bind(this); } testing(e){ e.preventDefault(); //axios call here, sending data/name } render () { return ( <div> <form onSubmit={this.testing}> <input name="name" value={this.state.name}/> </form> </div> ) } }
【问题讨论】:
-
您的表单具有受控输入。所以是的,您需要始终使用
onChange将输入值与状态保持同步。 -
那是因为你的
value是从状态中获取的,所以你实际上需要修改状态,然后它会用新值重新呈现你的输入,你可以删除value={this.state.name}并且不会“只读”。但是我认为您当前的方法更好,否则以后您将不得不使用选择器或其他方式来获取您的价值,而不是在您的状态下使用它。
标签: javascript reactjs