У меня есть создатель действия, который обновляет 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
обновляется новыми ключами и значениями много раз в секунду. Но для многих ключей значение меняется не часто. Другие ключи постоянно обновляются.
Имеет ли смысл проверять равенство объектов, кроме строгого по умолчанию ===
? Будет ли здесь полное равенство? Или глубокое равенство? Глубокое равенство требует больше времени для проверки, чем поверхностное равенство? Если объект так сильно меняется, имеет ли смысл просто сохранять ===
равенство?
И в более общем смысле, если тип, возвращаемый useSelector()
, является объектом, как можно проверить чтобы увидеть, изменился ли объект? Я до сих пор не совсем понимаю разницу между поверхностным и глубоким равенством для объектов.
В прошлом я делал это (из документов: https://react-redux.js.org/api/hooks):
import { shallowEqual, useSelector } from 'react-redux'
// later
const selectedData = useSelector(selectorReturningObject, shallowEqual)