关于命名: onXXX 和 handleXXX 怎么区分

2020-05-30 09:59:46 +08:00
 fancy2020

前端代码(react)中经常需要处理事件, 而事件处理函数的命名方式通常有(拿 click 事件举例):onClick 和 handleClick 这两种 。
我发现自己这两种命名方式经常是混着的,强迫症不太能忍,想知道大家一般是怎么命名事件处理函数的。

3952 次点击
所在节点    程序员
14 条回复
hantsy
2020-05-30 10:03:09 +08:00
<form onSubmit={handleLogin}/>

<button onClick={increaseCounter} />
hantsy
2020-05-30 10:04:44 +08:00
onXXX 不是 react 内置的属性,看 React Form 那一篇。不大明白 React 。
xianchenxy
2020-05-30 10:05:51 +08:00
用动词,比如 do 、send...等等
guyeu
2020-05-30 10:09:28 +08:00
on 后面是动词,handle 后面是名词?
sleepwalker
2020-05-30 10:10:48 +08:00
个人一般用 handle 或其他动作来表明当前函数的作用,on 在传递 props 的时候用
xiadd
2020-05-30 10:11:28 +08:00
Mutoo
2020-05-30 10:15:38 +08:00
onClick: add a click event listener
handleClick(Event): a handle function that deal with a click-event parameter
czkm1320
2020-05-30 14:24:46 +08:00
插个眼,我也一直想知道
crz
2020-05-30 15:03:14 +08:00
onEvent 是组件定义,组件留了这个事件回调; handleEvent 是传递给这个组件的函数,用来处理这个事件
iugo
2020-05-30 15:24:31 +08:00
官方文档给的建议挺清楚了:

```
<button onClick={handleClick}>
</button>
```

https://reactjs.org/docs/handling-events.html
lizz666
2020-05-30 15:35:00 +08:00
我习惯用 handle
otakustay
2020-05-30 16:21:57 +08:00
onXxx 是被动的,你不知道具体会发生什么,其实现由外部指定
handleXxx 是主动的,由你实现并明确知道会发生什么,通常通过 onXxx 交给外部
我不是太喜欢 handleXxx,我更喜欢有明确语义说明会发生什么的函数名,然后传给 onXxx
codermagefox
2020-05-30 16:37:31 +08:00
一点个人的理解:
on 表动作.比如,我拉屎以后冲厕所,冲这个动作,应该是 on 冲厕所.
handle 表处理事件.比如我拉屎以后,需要用一个事件来处理屎,这个事件就是 handleXXX.
不清晰?

如果你要(冲)厕所,就用 on 冲
如果你要处理屎,就用 handleChange(屎)

所以核心是,你当时是想做出行为还是想处理过程.
JerryCha
2020-05-31 01:53:25 +08:00
onSomething -passing to-> handleSomething

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/676886

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX