因为我们将onClick处理程序直接添加到组件中...例如:
<button onClick={dosomething}>Click</button>
Run Code Online (Sandbox Code Playgroud)
当我们处理几十个元素时,是否有一种有效的方法(不向每个元素添加onClick)?
例如,在我的主干应用程序中,我只是将一个处理程序应用于一个类:
events:
'click .someclass': 'doSomething'
Run Code Online (Sandbox Code Playgroud)
骨干方式似乎更清洁,更易于管理.有没有办法用React组件模拟这种行为?
为了添加一些透视图,我已经说了十几个或更多的表单元素,当它们中的任何一个被更改时,我希望可能运行一些逻辑.它们可以是文本框,单选按钮等.
不需要此优化。如果您正在使用其他库(例如jQuery)进行编码,那么React会自动为您执行此操作。
我引用:
事件委托:React实际上并未将事件处理程序附加到节点本身。当React启动时,它开始使用单个事件监听器在顶层监听所有事件。在安装或卸载组件时,只需简单地从内部映射中添加或删除事件处理程序即可。当事件发生时,React知道如何使用此映射进行调度。当映射中没有事件处理程序时,React的事件处理程序就是简单的无操作。要了解有关为何如此快速的更多信息,请参阅David Walsh的出色博客文章。
在这里看到:https : //facebook.github.io/react/docs/interactivity-and-dynamic-uis.html
您可以将事件处理程序应用于公共父元素,并在那里处理事件:
<form onChange={this.handleChange}>
{/* ...form elements... */}
</form>
Run Code Online (Sandbox Code Playgroud)
...事件处理程序根据事件对象确定要执行的操作.target:
handleChange(e) {
this.setState({[e.target.name]: e.target.value})
}
Run Code Online (Sandbox Code Playgroud)
作为一个活生生的例子,我有一个<AutoForm>组件,它使用这种技术来渲染一个<form>组件,该组件处理从更改的字段和提交的表单中提取数据。
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |