首页 > 解决方案 > react-redux 中对象的最佳相等性检查?

问题描述

我有一个动作创建者,它更新一个Object被调用的countyFrequencies

const updateCountyFrequency = (countyFrequencies) => ({
  type: 'UPDATE_COUNTY_FREQUENCY',
  countyFrequencies //object
})

我目前正在使用useSelector()钩子从状态react-redux中获取countyFrequencies,并将其传递给组件:

const countyFrequencies = useSelector(state => state.countyFrequencies);

return (
  <Component countyFrequencies={countyFrequencies} />
)

我的应用程序是一个动画,这个动作创建者正在运行很多次。countyFrequency每秒多次使用新的键和值更新对象。但是对于许多键,值不会经常变化。其他密钥会不断更新。

除了默认的 strict 检查 Object 相等性是否有意义===?浅平等会是这里的答案吗?还是深度平等?检查深度相等比浅相等需要更长的时间吗?===如果对象变化如此之大,保持平等是否有意义?

在更一般的意义上,如果返回的类型useSelector()是对象,如何检查对象是否已更改?我仍然不完全理解对象的浅相等和深相等之间的区别。

在过去,我已经这样做了(来自文档:https ://react-redux.js.org/api/hooks ):

import { shallowEqual, useSelector } from 'react-redux'

// later
const selectedData = useSelector(selectorReturningObject, shallowEqual)

标签: reactjsreduxreact-redux

解决方案


推荐阅读