I believe keeping code consistent is kind of important stuff.
Sometimes I mess my code with different handler names (working with Javascript).
What is the right name for event handlers? onClick
vs handleClick
?
This is subjective, but what you would see the most is the following:
- if you are creating component and exposing event hooks, those props would be
on
: onClick, onHover, onUsernameChanged, onError. From inside your components, these props are just functions you call on some event. You don't care what they do, your job is to just call them at the right time - if you are consuming another component, you want to add handling in response to these events, so you use
handle
: handleChange, handleClick, handleUserLogout, because your job is now to handle some event and make something happen in response to it. If you don't handle, no changes to the app state will be made
According to: Naming-Event-Handlers-React. The author of the page says:
For props:
We usually use the prefix on*
, as in onClick
. This matches the built-in event handler convention. And by matching it, we declare that these props will house similarly-used event handler functions.
For the function names:
We follow the exact same pattern, but we replace on
with handle*
, as in handleClick
.
I prefer naming event handler props/attributes on*
and event handler functions handle*
.
The reasoning for that is simple, otherwise sometimes they clash. Take a look at this example:
const Foo = ({ onClick }) => {
const handleClick = (event) => {
doSomethingElseHere();
onClick(event);
}
return (
<button onClick={handleClick}>Bar</button>
)
}
If we named both the handler and the prop onClick
, their names would clash.
To props use on... for example:
const ProductVariants = ({ productId, onCancel, onReturnProducts })
but your functions names you should use handle...
<ProductVariants
productId={productId}
onCancel={handleCancel}
onReturnProducts={handleReturnProduct}
/>
© 2022 - 2024 — McMap. All rights reserved.
onClick
, just as in the 'onclick' attribute of an html element. The handler is the function that is attached to that attribute, so for e.g. a React component you might do something likeconst handleClick = () => 'click'
and<myComponent onClick={handleClick}/>
– ExogamyonClick
as the actual event, and usehandleClick
as the function which handles the event. There are lots of different opinions and approaches on this, the main thing is that when you're writing your functions you should be consistent across your whole application. – Symer