У стрелочных функций есть проблемы с производительностью, каким должен быть лучший подход для передачи события и параметра обработчику событий?
Например:
Опция 1:
<div
onClick = {setPerson(name)}
/>
const setPerson = (name) => (e: any): void => {
setPerson(name)
e.stopPropagation()
}
вариант 2:
<div
onClick = {(e) => setPerson(null, name, e)}
/>
const setPerson = (name, e): void => {
setPerson(name)
e.stopPropagation()
}
Если вы хотите предотвратить повторный рендеринг дочерних компонентов из-за свойства, которое получает новую функцию, вы можете запомнить его следующим образом:
const memoizedSetPerson = React.useCallback(() => { // add the parameters
// do what you want here
}, [setPerson])
Применение:
<div onClick = {memoizedSetPerson} />
const memoizedSetPerson = React.useCallback((e) => {
// e will be the event
}, [setPerson])
useCallback
вернет запомненную функцию, поэтому просто используйте ее так же, как и любую другую функцию.
@ Ar26 добавил использование к ответу