【问题标题】:React.memo with isEqual method from lodash incompatible?React.memo 与 lodash 中的 isEqual 方法不兼容?
【发布时间】:2019-08-19 10:28:48
【问题描述】:

我正在尝试将我的组件转换为与 React.memo 一起使用。 我的一些组件具有我想深入比较的对象或数组道具的问题。

查看react docs for memo,我可以传递一个函数来进行比较。

我为它提供了lodash isEqual深度比较方法,但有时它不起作用。

我认为 isEqual 在尝试将 react 组件与内部的 children 道具进行比较时存在一些问题。

React 子结构示例:

在两个子对象之间运行 lodash isEqual 会返回 false,即使它们完全相同。

我想找到一种方法来继续使用 lodash isEqual,因为它适用于任何其他类型的结构,但也可以修改它以适用于儿童。

有什么建议吗?

谢谢!!!

PS - 我像这样运行 lodash 方法:

const component = React.memo((props) => {
...code here with children usage..
}, (oldProps, newProps) => _.isEqual(oldProps, newProps)

【问题讨论】:

标签: reactjs lodash react-hooks


【解决方案1】:

你有函数 onClick 属性,isEqual 不能检查函数是否改变了,这就是它返回 false 的原因。

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2017-12-03
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多