Когда отправляется действие, состояние другого редуктора удаляется.Зачем? - PullRequest
0 голосов
/ 28 марта 2019

Я использую Redux в своем проекте впервые.У меня есть несколько редукторов и и действий.Когда отправляется первое действие, состояние изменяется.Это выглядит хорошо.После отправки второго действия состояние снова изменяется, но предыдущие изменения удаляются.Я имею в виду, что при отправке 'FETCH_COMPANY_INFORMATIONS' companyName изменяется, и companyDesc устанавливается на начальное значение.Затем отправляется «FETCH_INITIAL_MEMBER» и удаляется companyName, но companyDesc все еще там, и полезные нагрузки членов также изменяются.В чем моя ошибка?Благодарю.

Я пробовал много способов решить эту проблему, но все еще продолжаю.Я проверяю это на Redux DevTools.

memberReducer

const initialState = {
  username: '',
  companyId: '',
  isAdmin: '',
  photo: '',
};
export default (state = initialState, action) => {
  switch (action.type) {
    case FETCH_INITIAL_MEMBER:
      return {
        ...state,
        username: action.payload.username,
        companyId: action.payload.companyId,
        isAdmin: action.payload.isAdmin,
      };

    default:
      return state;
  }
};

companyReducer

const initialState = {
  companyName: 'companyName',
  companyDesc: 'companyDesc',
};
export default (state = initialState, action) => {
  switch (action.type) {
    case FETCH_COMPANY_INFORMATIONS:
      return {
        ...state,
        companyName: action.payload.companyName,
      };

    default:
      return state;
  }
};

memberAction

const fetchInıtıalMember = async muuid => {
  axios
    .get(`/api/member/${muuid}`)
    .then(response => {
      const username = response.data.mname;
      const isAdmin = response.data.misAdmin;
      const companyId = response.data.cid;

      store.dispatch({
        type: FETCH_INITIAL_MEMBER,
        payload: {
          username,
          isAdmin,
          companyId,
        },
      });
    })
    .catch(error => {});
};

companyAction

const fetchCompanyInformations = () => {
  store.dispatch({
    type: FETCH_COMPANY_INFORMATIONS,
    payload: { companyName: 'dispacthedCompanyName' },
  });
};

Редактировать: Код выше верен.Моя ошибка в импортировании констант.Эта реализация Redux работает хорошо.Я хранил все константы типов действий в файле types.js.Я импортирую константы этого типа в другие файлы неправильно.После его изменения моя проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...