我是 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)}
输入元素来解决这个错误
,它可以正常工作(它会在props或状态更新时更新,我可以重新输入值),但我认为这不是一个正确的解决方案,因为它会导致我的浏览器控制台出错。这是因为“this.onChange”函数不存在。
请帮助我解决这个问题,并提前致谢
问候,
维迪