Могу ли я использовать createStore () из redux внутри компонента? - PullRequest
0 голосов
/ 09 апреля 2019

Вопрос: Возможно ли использовать createStore () из redux в компоненте?Если да, то как это сделать правильно?

Я пытаюсь понять реакцию и редукцию путем преобразования этого примера секундомера в компонентный подход.

Оригинальный подход заключается в следующем:

let container = Redux.createStore((model = { running: false, time: 0 }, action) => {
  const updates = {
    'START': (model) => Object.assign(model, {running: true}),
    'STOP': (model) => Object.assign(model, {running: false}),
    'TICK': (model) => Object.assign(model, {time: model.time + (model.running ? 1 : 0)})
  };
  return (updates[action.type] || (() => model))(model);
});

И

const render = () => {
  ReactDOM.render(view(container.getState()),
    document.getElementById('root')
  );
};

Что я получаю до сих пор, это это , которое не показывает счетчик div.

Обратите внимание, что я пытаюсь понять причины реакции и приведения, таким образом избегая преднамеренного использования react-redux.

1 Ответ

0 голосов
/ 09 апреля 2019

Это технически возможно, но вы не должны это делать.

В React вы хотите, чтобы вывод метода render зависел только от свойств и состояния компонента. Итак, что вы хотите сделать, это определить компонент, который ожидает что-то вне его, чтобы обеспечить реквизит, а затем сделать Redux таким провайдером. Вы можете прочитать больше об этом здесь . В вашем примере была еще одна проблема: Redux хочет, чтобы редуктор (метод, который вы передаете createStore), чтобы не изменял предыдущее состояние. Object.assign(state, ...) изменяет объект, поэтому его необходимо изменить на Object.assign({}, state, ...). Подробнее об этом здесь .

У меня есть рабочий фрагмент для вас, но я настоятельно рекомендую следовать официальным руководствам:)

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