javascript - 在反应中对表单元素的每个 onChange 设置状态是否正确?(OnChange vs ref)
问题描述
一段时间以来,我一直在使用 react 开发应用程序。我使用 react 的官方网站和其他来源的示例。但是,我有一个问题。为什么要在每个输入元素的 onChange 中设置状态?这会导致页面不必要的渲染。让我用一个简单的例子来解释我自己。
让我们有一个输入文本框。如果用户在输入值后按下提交,我们希望在屏幕上显示该值。我可以用两种方法来做这个例子。但我不知道该选择哪一个。如果您能帮助我,我将不胜感激。
在示例 1 中,仅当我单击提交按钮时才呈现页面。
但是,在示例 2 中,情况有所不同。为我在文本框中输入的每个值呈现页面。当我按下提交按钮时,页面被渲染。
当我在互联网上查看时,它通常显示为示例1。它在2个示例中给出了相同的结果。但我应该更喜欢哪一个?
示例 1:
class App extends React.Component {
state = {
value: ''
}
handleSubmit = e => {
e.preventDefault();
this.setState({ value: this.textInput.value})
};
render() {
return (
<div>
<h1>React Ref - Callback Ref</h1>
<h3>Value: {this.state.value}</h3>
<form onSubmit={this.handleSubmit}>
<input type="text" ref={e => this.textInput = e} />
<button>Submit</button>
</form>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
示例 2:
class App extends React.Component {
state = {
value: ''
}
handleSubmit = e => {
e.preventDefault();
this.setState({ value: e.target.value})
};
onChange = e => {
this.setState({ value: e.target.value})
};
render() {
return (
<div>
<h1>React Ref - Callback Ref</h1>
<h3>Value: {this.state.value}</h3>
<form onSubmit={this.handleSubmit}>
<input type="text" onChange={this.onChange} />
<button>Submit</button>
</form>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
解决方案
推荐阅读
- jquery - 向您机器上的数据库发送 GET 请求的 URL 是什么?
- express - Hapi.js:不支持的媒体类型
- sql - 执行多个 SQL Server 更新而不循环
- c++ - 创建一个可以返回对角矩阵的 C++ mex 函数
- r - 按国家/地区生成缺失年份的变量?
- python - 尝试通过在 python 中更改数组的值来更新数组
- html - 如何对齐 HTML 中的按钮?
- javascript - 无法使用模态将值放入本地存储
- firebase - 是否可以使用模拟服务帐户初始化 Firebase Admin SDK?
- vega-lite - 使用 Vega-Embed 时的过时版本警告