javascript - 带操作的 redux 调用缩减器

标签 javascript reactjs redux

这是我的 reducer :

export default function dashboardReducer(state=initialState.alerts, action){
    switch(action.type){
        case constActions.GET_ALERTS_SUCCESS:
            return action.alerts;
        case constActions.GET_WL_STATISTICS_SUCCESS:
            return action.wlStatistics;
    default:
        return state;
    }
};

我的根 reducer :

const rootReducer = combineReducers({
    dashboard
});

在组件中,这是mapStateToProps:

function mapStateToProps(state, ownProps){
    return{
        alerts: state.dashboard
    };
}

现在我有 2 个操作 GET_ALERTS_SUCCESSGET_WL_STATISTICS_SUCCESS。 在组件中,我有 actions.alerts 的属性,但是如何在组件中获取对 action.wlStatistics 的引用?我可以使用操作类型调用 reducer 吗?

最佳答案

您的dashboardReducer 要么返回下一个状态的“alerts”initialState 或“alerts”或“wlStatistics”。它应该返回一个具有这两个操作有效负载作为属性的对象:

const initialState = {
  alerts: null,
  wlStatistics: null
};

export default function dashboardReducer(state=initialState, action){
    switch(action.type){
        case constActions.GET_ALERTS_SUCCESS:
            return Object.assign({}, state, { action.alerts });
        case constActions.GET_WL_STATISTICS_SUCCESS:
            return Object.assign({}, state, { action.wlStatistics });
    default:
        return state;
    }
};

你的 Prop 现在将被映射为

this.props.alerts

this.props.wlStatistics

每当任一操作更新“dashboardReducer”中的状态时,您的组件将重新渲染/接收Props,并且 Prop 将使用新值进行更新

关于javascript - 带操作的 redux 调用缩减器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37921187/

相关文章:

javascript - 通过 Patch 方法更新 Yaml 文件不起作用

javascript - 如何更有效地在组件之间传递状态和属性

javascript - ReactJS 处理大量状态数据

javascript - jQuery - 如何在嵌入 Mailchimp 表单电子邮件提交后添加 "Thank you"消息?

php - 如何将变量从 JavaScript (Google Maps API) 传递到我的表单输入

javascript - meteor 和 react : Helpers

redux - 当一个 Action 被调度时,所有的 reducer 都会被调用吗?

javascript - 使用 react-testing-library 按角色测试 material-ui TextField

javascript - 在我的 React 项目中安装 Swiper 时遇到问题

javascript - 当其中一个字段是数组时如何更改状态对象?