我希望问一个关于在HTML和React中使用事件处理程序的问题。
在Jon Duckett所写的《JavaScript和jQuery》一书中,作者提到使用HTML事件处理程序属性被认为是不良做法,例如以下内容:
<button onClick="hide()">click me</button>
但最近我开始学习React,当一个组件被定义时,有很多例子将事件处理程序用作属性,并且这似乎是常见的做法,不会因为这样做而受到批评,
<button onClick={doSomething}>
xxxyyyzzz
</button>
这是有原因的吗?是因为这是在React中绑定事件处理程序的唯一方式吗?从我看来,React基本上是通过HTML构建组件元素,但使用事件处理程序属性将事件分配给它,那么为什么React会重新引入被认为是不良实践的概念呢?
HTML
的onXYZ
属性样式事件处理程序时,您只能调用全局函数,无法分配函数引用(如果在 DOM 元素上分配到onxyz
,则可以)。但是,使用 JSX 的onXYZ
属性,您可以使用函数引用,并且该函数不必是(基本上从不是)全局的。 - T.J. Crowder