javascript - 在 React Redux 中将之前的状态与新的状态进行比较

标签 javascript reactjs redux

如果声明与前一个相同,我想尝试不要传播"dispatch"。 我的“状态”始终包含默认值的问题。

const initialState = {
  pending: false,
  fetched: false,
  data: {
    playAndPayAllowed: false,
    sections: {},
    allowedSectionsCount: 0
  }
}

function isPreviousStateEqualToNew(oldState, newState) {
   return JSON.stringify(oldState) === JSON.stringify(newState);
}

export default function shopConfig(state = initialState, action) {
   switch (action.type) {
      case SHOP_CONFIG_PENDING:
        return {
            ...state,
            pending: true,
            data: {
                playAndPayAllowed: false,
                sections: {},
                allowedSectionsCount: 0
            },
            error: false
        }
     case SHOP_CONFIG_SUCCESS:
        if (isPreviousStateEqualToNew(state.data, action.payload)) {
            return;
        }

        const playAndPayAllowed = action.payload.playAndPayAllowed;
        const sections = action.payload.sections || [];
        const allowedSectionsCount = Object.values(sections).filter(item => item);

        return {
            ...state,
            pending: false,
            data: {
                playAndPayAllowed,
                sections: sections,
                allowedSectionsCount: allowedSectionsCount.length
            },
            error: false
        }
    default:
        return state;
}

}

期望在“state”变量中看到旧状态,但“state”始终等于“initialState”。

最佳答案

我不明白问题出在哪里,或者我弄错了,只需返回未更改的状态:

if (isPreviousStateEqualToNew(state.data, action.payload)) {
            return state;
        } 

关于javascript - 在 React Redux 中将之前的状态与新的状态进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571278/

相关文章:

javascript - 等待代码执行输入

reactjs - withRouter、connect() 和 React-Compose

reactjs - 为什么我可以访问 Redux 存储中的数组?

reactjs - react native Redux useDispatch 不工作

javascript - 如何使 thunk 独立于状态形状以使其可移植?

javascript - 尝试在 jQuery 中随机化新闻滚动条间隔

javascript - Angular - 路由器导航无故取消

javascript - jQuery : Connect list counter

reactjs - Next.js 获取和维护所有组件的全局数据

reactjs - 如何在 Redux 中完成另一个同步操作时分派(dispatch)一个操作