【问题标题】:How can I update the state of reducer?如何更新减速器的状态?
【发布时间】:2018-08-08 08:19:53
【问题描述】:

我想在执行 ACTIVITIES_SEND_SUCCESS 时通过将新数据附加到对象活动数据的末尾来更新活动数据的状态。

ActivityReducer.js

import {
  ACTIVITIES_FETCH_SUCCESS,
  ACTIVITIES_SEND_SUCCESS,
  SUBACTIVITY_SEND_SUCCESS
} from '../actions/types';

const INITIAL_STATE = { activitiesData: {}, activityCreated: {}, listActivity: {} };

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case ACTIVITIES_FETCH_SUCCESS:
      return { ...state, activitiesData: action.payload };
    case ACTIVITIES_SEND_SUCCESS:
      return { ...state, activityCreated: action.payload };
      case SUBACTIVITY_SEND_SUCCESS:
      return { ...state, listActivity: action.payload };
    default:
      return state;
  }
};

【问题讨论】:

  • appending the new data to the end of the object. ?究竟是哪个对象
  • 到对象activityData
  • activitisData 是数组还是对象
  • activitisData 是一个对象

标签: reactjs react-native redux react-redux reducers


【解决方案1】:

您可以使用spread operator syntax like 追加数据

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case ACTIVITIES_FETCH_SUCCESS:
      return { ...state, activitiesData: action.payload };
    case ACTIVITIES_SEND_SUCCESS:
      return { ...state, activityCreated: action.payload, activitiesData: {...state.activitesData, ...action.payload }  };
      case SUBACTIVITY_SEND_SUCCESS:
      return { ...state, listActivity: action.payload};
    default:
      return state;
  }
};

【讨论】:

  • 它在action.payload的activityData级别给出错误!!
  • 检查更新,错误是因为 action.payload 不是对象的有效键
  • 这样工作 return { ...state, activityCreated: action.payload, activitiesData: { ...state.activitesData, ...action.payload } };但是,由于某种原因,activitesData 状态为空,仅添加最近添加的数据!
猜你喜欢
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2018-06-06
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多