Чтение состояния из магазина в редукторе - PullRequest
0 голосов
/ 13 июня 2018

Я создаю простое приложение для чата, использующее реагирование и редукцию.Я хочу манипулировать только объектом сообщений в состоянии в редукторе, но я получаю ошибку: TypeError: Cannot read property 'getState' of undefined

Это редуктор:

import { getMessages } from "../static_data";
import { SEND_MESSAGE } from "../actions/constants/action_types";
import _ from 'lodash';
import store from '../store';

const { messages } = store.getState();
export default function message(state = messages, action) {
  switch (action.type) {
    case SEND_MESSAGE:
      const { message, userId } = action.payload;
      const allUserMsgs = state[userId];
      const number = +_.keys(allUserMsgs).pop();
      return {
        ...state,
        [userId]: {
          ...allUserMsgs,
          [number]: {
            number,
            text: message,
            is_user_msg: true
          }
        }
      };
    default:
      return state;
}
}

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Это была просто ошибка приращения числа.Я изменил это const number = +_.keys(allUserMsgs).pop(); На это const number = _.keys(allUserMsgs).pop() + 1 ; и теперь оно работает

0 голосов
/ 13 июня 2018

Ваш файл настроек магазина и / или корневой редуктор почти наверняка импортируют этот файл редуктора срезов, поэтому вы создаете проблему циклического импорта.Это означает, что файл store.js не будет завершен при инициализации этого модуля, поэтому store не определено.

Кроме того, ваша логика редуктора не должна пытатьсяполучить доступ к экземпляру магазина.Вместо этого он должен только определять новое состояние на основе своих (state, action) аргументов.

Кроме того, этот редуктор среза должен определять свое собственное значение начального состояния, например:

const initialState = {};

export default function message(state = initialState, action) {
    // logic here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...