У меня вопрос о проверке равенства redux useSelector.
См. Документ React Redux Hook (https://react-redux.js.org/api/hooks#equality -comparisons-and-updates )
useSelector будет выполнять сравнение ссылок с возвращаемым значением и предыдущим значением, принудительно выполнить повторную визуализацию, если результат кажется другим
У меня есть состояние хранилища блога по умолчанию, подобное этому
searcherParam: {
keyword: '',
categories: [],
tags: [],
},
В компоненте , Я использую useSelector для получения значения
const searchParam = useSelector(state => state.Blog.searcherParam)
Если я отправлю действие для обновления SearcherParam с тем же значением, компонент будет повторно визуализирован, поскольку возвращаемое значение - объект (мелкое сравнение)
Итак, я получаю значение, вызывая useSelector несколько раз
const keyword = useSelector(state => state.Blog.searchrParam.keyword)
const categories = useSelector(state => state.Blog.searchrParam.categories)
const tags = useSelector(state => state.Blog.searchrParam.tags)
И я отправляю действие, чтобы снова обновить SearchcherParam с тем же значением
компонент не будет повторно отображать
Я не могу понять, почему компонент не перерисовывается?
Если useSelector выполняет сравнение ссылок, значение категорий (массив) не должно совпадать с ref а также теги после отправки
Есть ли у меня недоразумения? Спасибо
Причина отказа от повторного рендеринга заключается в том, что я сохраняю категории (из хранилища redux) через useState.
и использую значение useState для отправки, так что это та же ссылка ...
вот коды и ящик, извините за тупой вопрос Q_Q
https://codesandbox.io/s/useselector-test-u6pvg