新手 React 问题 - 我在尝试遵循文档时感到非常困惑。
我想要一个简单的文本输入,在单击按钮时在表单下方显示输入值。很简单,对吧?
到目前为止,这是我的组件:
export default class TextInput extends React.Component {
constructor(props) {
super(props);
this.state = {value: ''};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
this.setState({ value: event.target.value });
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<label>
<input type="text" value='' />
</label>
<input type="submit" value="Submit" />
</form>
<p>{ this.state.value }</p>
</div>
);
}
}
但是,它根本不起作用——当用户键入时,表单不显示任何内容。
我究竟做错了什么?
原文由 Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议
变化:
1. 您需要从输入元素中删除
value=''
否则它将不允许您键入任何内容,您也没有使用任何 onChange 函数。元素的使用方法:
受控组件: 定义一个 onChange 函数和值属性,并在该更改函数内更新该值。
非受控组件: 不定义value属性,使用
ref
获取element的值。2. 将 ref 与输入元素一起使用以获取其在
onSubmit
函数中的值。检查这个: