HTML事件处理程序与React事件处理程序
我想在HTML和React中使用时询问有关事件处理程序的问题。HTML事件处理程序与React事件处理程序
在这本书中的Javascript和jQuery由乔恩·达克特写的,作者提到,使用HTML事件处理程序的属性被认为是不好的做法 比如像下面这样:
<button onClick="hide()">click me</button>
但最近我开始学习反应和组件的定义时,也有用作属性事件处理的例子很多,似乎普遍这样做,不这样做让批评,
<button onClick={doSomething}>
xxxyyyzzz
</button>
有什么理由这个?是因为这是绑定React?中的事件处理程序的唯一方法,从我看到它的方式来看React基本上是通过HTML构建组件元素,但使用事件处理程序属性为它分配事件,因此为什么是React带回被认为是不好实践的概念?
为什么内联事件监听器不好实践?
HTML描述了文档的内容和结构,CSS描述了外观,JavaScript描述了逻辑或行为。这些东西应该分开保存。 HTML和JavaScript代码不应混用。你的例子是:
<button onClick="hide()">click me</button>
但是,这并不适用于React:我们没有一个HTML文件。相反,我们有模块化的组件,它们有自己的结构,风格和行为。
在React中,我们不希望将表示和逻辑分离,而是自包含的组件。这就是使用“Vanilla JavaScript”/ DOM API的应用程序。
在以前的Javascript时代,这被认为是不好的做法,因为我们想要尽可能多地分离HTML和JS以实现更好的代码管理。您不能快速导航到您的onClick
在HTML页面与另一堆button
。
在React中,您可以通过组件树管理应用程序代码。我认为发生反应的动力是:
- 模块化
- 组成
- DRY(不要重复自己)
回到你的简单的例子,onClick
处理程序将很容易地内管理你的组件。也许还有其他一些处理程序,但在1组件的范围内仍然很方便。取决于组件层次的哪个级别,你想要做的每件事都在同一个页面,同一个类,相同的功能上。