在React中,使用函数式组件时如何记住一个内联函数?
In React, how to memorize an inline function when using functional components?
箭头函数存在性能问题,
将事件和参数传递给事件处理程序的最佳方法应该是什么?
例如:
选项 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
将 return 一个记忆函数,所以就像使用任何其他函数一样使用它。
箭头函数存在性能问题, 将事件和参数传递给事件处理程序的最佳方法应该是什么?
例如:
选项 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
将 return 一个记忆函数,所以就像使用任何其他函数一样使用它。