我是 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”函数不存在。
请帮我解决这个问题,在此先感谢
问候,
维迪
原文由 vidihermes 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的输入不起作用的原因是因为您需要
define
onChange
函数,实际上sets the state
具有更新的值。您可能可以内联执行它,因为它只需要像这样的语句但是我建议你使用
onChange
方法,因为你可以用它处理多个输入,而且看起来更干净