gpt4 book ai didi

react-native - useSelector 导致多次重新渲染

转载 作者:行者123 更新时间:2023-12-05 00:55:32 24 4
gpt4 key购买 nike

使用 react-devtools 时,它告诉我我的根组件重新渲染的原因是因为钩子(Hook)发生了变化?

当我删除任何 useSelector 时,我的根组件只呈现一次,启用后它会呈现 6 次。

关于为什么会发生这种情况的一些猜测是什么?

import {
/// Data State Constants...
SET_USER_DATA,
SET_BADGE_COUNT,
} from "../Actions/gameState";

const initialState = {
/// Data state...
userData: [],
badgeCount: 0,
};

export default function gameState(state = initialState, action) {
const { type, payload } = action || {};
switch (type) {
/////////////////////////
/// Data state Reducers...
/////////////////////////
case SET_USER_DATA: {
return { ...state, userData: payload };
}
case SET_BADGE_COUNT: {
return { ...state, badgeCount: payload };
}

default:
return state;
}
}

最佳答案

好的,事情是:useSelector 用严格的 === 将新值与旧值进行比较。您可以为每个字段调用一个 useSelector 或从 react-redux 实现 shallowEqual:

const someState = useSelector(state=>state.myState.someState, shallowEqual)

这里的文档: https://react-redux.js.org/next/api/hooks#equality-comparisons-and-updates

关于react-native - useSelector 导致多次重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64178607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com