【发布时间】:2017-08-06 01:58:23
【问题描述】:
我是 React 和 REDUX 的新手,我只是开发了一个简单的 react 应用程序,现在我遇到了一个问题,当我在我的组件中渲染一个输入元素时,如果我将元素设置为“值”,它就会变为只读,但如果我在“defaultValue”上设置了值,当我重新更新我的状态时,它将永远不会再次更新。
这是我的代码:
import React from "react";
export default class EditForm extends React.Component {
editTransaction(event) {
var transaction = this.props.transaction;
event.preventDefault();
var NewTransaction = {
transactions_data: {
amount: this.refs.amount.value
}
}
this.props.editTransaction(NewTransaction, transaction.id);
}
closeForm() {
this.props.closeForm();
}
render() {
var {amount}=this.props.transaction;
return (
<div>
<br/>
<h4>Edit Transaction</h4>
<div className="btn btn-danger pull-right" onClick={this.closeForm.bind(this)}>close</div>
<div className="clearfix"></div>
<form onSubmit={this.editTransaction.bind(this)}>
<div>
<label for="amount">Amount</label>
<input value={amount} onChange={(value) => this.onChange(value)} className="form-control"
id="amount" name="amount" type="number"
ref="amount"/>
</div>
<br/>
<br/>
<input className="btn btn-info" type="submit" value="submit"/>
</form>
</div>
);
}
}
然后我发现我是否通过添加
onChange={(value) => this.onChange(value)} 在我的输入元素上,它工作正常(它在道具或状态更新时更新,我可以重新输入值),但我认为这不是一个正确的解决方案,因为它会导致我的浏览器控制台出错.这是因为“this.onChange”函数不存在。
请帮我解决这个问题,在此先感谢
问候,
维迪
【问题讨论】:
-
React 将输入视为受控(与 prop/state 绑定的值)或不受控(没有绑定值)。我非常建议多读几遍official documentation,因为这在开始时可能会让人感到困惑。您在控制台中提到了错误,您能否也用它们的详细信息更新您的问题?
标签: javascript reactjs frontend