【发布时间】:2018-09-25 19:02:34
【问题描述】:
我正在学习如何在 React 中使用 <form>,我见过的大多数示例都使用 state 和 onChange 的组合来跟踪表单的输入:
class Form extends React.Component {
handleChange(event) {
this.setState({
inputvalue: event.target.value
})
}
render() {
return (
<form onSubmit={this.handleSubmit.bind(this)}>
<label>Name</label>
<input type="text" value={this.state.inputvalue} onChange={this.handleChange.bind(this)}/>
<input type="submit" value="Submit"/>
</form>
);
}
}
但是,假设我有很多 <input>,甚至还有一些 <textarea>,它们可能会经常变化。在这种情况下,他们每个人都会在每次更新时调用onChange 方法,并且组件将在每次按键时重新渲染。
看到人们如何快速打字,这是否值得关注?
【问题讨论】:
-
我很想看到非常熟悉 react 代码的人提供的超级详细的答案,但根据我作为 react 用户的经验,对于普通的 react 应用程序来说,这不是什么值得担心的事情。常识说它肯定比让浏览器做它自己的事情要慢,但是 react 已经针对这种情况进行了优化,我认为在正常情况下你不会注意到任何延迟。
-
也就是说,如果您担心性能,我不会像您那样将您的函数绑定到渲染方法中。这意味着您每次渲染都会创建一个新的函数实例,因此 react 最终会做比必要更多的工作。当您担心渲染过多时,最好在构造函数中绑定。
-
表单没有。应用程序可以。上面的评论对绑定有一个很好的观点。如果担心频繁更新,可以在 onChange 上进行 debounce。
标签: reactjs forms performance