【发布时间】:2021-03-09 05:15:08
【问题描述】:
考虑一下我有这样的例子:
import React, { useMemo, useCallback } from 'react'
const Hello = (props) => {
const { firstName, lastName } = props
const fullName = useMemo(() => `${firstName} ${lastName}`, [firstName, lastName])
const sayHello = useCallback(() => {
console.log(`Hello, ${fullName}`)
}, [fullName])
return (
// ...
)
}
export default Hello
基本上我有一个名为Hello的组件,它接收两个道具firstName和lastName,然后我需要根据这两个道具计算fullName并有一个函数sayHello()使用fullName做某事
所以我的问题是:这里有必要使用useMemo() 和useCallback() 进行性能优化吗?似乎过度使用 useMemo() 和 useCallback() 只是为了一点点好处,我不确定这是否会导致潜在的副作用?
【问题讨论】:
-
sayHello有什么用?这对答案有很大影响。 -
我认为一般建议只写普通函数,只有当你发现性能有问题时,才使用记忆工具。作为 T.J.状态,这取决于消耗
sayHello的内容。 -
正如克劳德所说;如果您将
sayHello传递给一个包含许多项目的列表并使用onClick 会怎样?在每个渲染上传递一个新创建的事件处理程序将导致虚拟 dom 比较失败,React 会将所有项目重新绘制到 DOM。
标签: javascript reactjs react-hooks usecallback react-usememo