![](/img/trans.png)
[英]How can i stop input elements from switching to from uncontrolled to controlled and vice versa using react hooks?
[英]Why am I switching from controlled to uncontrolled input in react
我不確定為什么我會從受控輸入切換到不受控制的輸入警告。 this.state.lineItemName
在我的構造函數中定義,這似乎是我讀過的其他SO問題的主要錯誤。
這與React的todoMVC實現非常相似。
class LineItemForm extends React.Component {
constructor(props) {
super(props);
this.state = {
newLineItem: ""
}
}
render() {
return(
<tr>
<td>
<input type="text"
onChange={this.handleChange.bind(this)}
onKeyDown={this.handleKeyDown.bind(this)}
value={this.state.newLineItem}
placeholder="Search for an item..."
autoFocus={true}
/>
</td>
</tr>
);
}
handleChange(e) {
this.setState({newLineItem: event.target.value});
}
handleKeyDown(e) {
if (e.keyCode === this.props.ENTER_KEY_CODE || e.keyCode === this.props.TAB_KEY_CODE) {
e.preventDefault();
let name = e.target.value.trim();
if (name) {
let lineItem = {
name: name
};
this.props.createLineItem(lineItem, this.props.sectionId)
this.setState({newLineItem: ""})
}
} else {
return;
}
}
}
LineItemForm.defaultProps = {
ENTER_KEY_CODE: 13,
TAB_KEY_CODE: 9
}
采用
handleChange(event) { this.setState({newLineItem: event.target.value}); }
代替
handleChange(e) {
this.setState({newLineItem: event.target.value});
}
由於onChange
事件的處理程序中的錯誤而發生警告。
受控組件需要onChange
事件的處理程序。 這允許組件更新其值。 如果處理程序不起作用,則無法通過props更新該value
,並且必須通過用戶輸入的值進行設置。
要修復此錯誤,您需要更正您定義的onChange
事件處理程序中的錯誤:
// Parameter was renamed to 'event' to reflect its use in the
// 'setState' method call below
handleChange(event) {
this.setState({newLineItem: event.target.value});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.