为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 React 内置的 React.memo 比较功能?

如何使用 React 内置的 React.memo 比较功能?

ITMISS 2022-11-11 16:18:58
我想检查某个 prop 是否手动更改,然后使用 React 的内置比较功能对其他 prop 进行比较。例如:React.memo(  () => <div />,  (prevProps, nextProps) => {    if (!nextProps.visible) {      return true;    }    return React.shallowCompare(prevProps, nextProps);  },);我可以轻松编写自己的比较函数或从 React 的源代码复制/粘贴,但如果 React 更改了它们的默认比较函数,那么我也必须手动更改我的函数。有没有办法使用 React 的内置比较功能React.memo?此外,AFAIKreact-addons-shallow-compare已过时。
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

抱歉不行。shallowEqual如果您不提供比较功能,则React 默认为,但如果您返回任何特殊的东西(例如return null),则没有使用默认行为的额外逻辑。


React 的用法:


const prevProps = currentChild.memoizedProps;

// Default to shallow comparison

let compare = Component.compare;

compare = compare !== null ? compare : shallowEqual;

if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {

...

React 目前没有导出shallowEqual. 但是,React 的文档指出它只是浅比较,这不太可能发生太大变化,并且可以像您所知的那样轻松实现(示例)。我假设这个决定是为了减少他们的团队向开发人员公开的 API。


查看完整回答
反对 回复 2022-11-11
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信