Razzle: В примерах Redux есть предупреждение провайдера HMR

Созданный на 6 окт. 2017  ·  5Комментарии  ·  Источник: jaredpalmer/razzle

Воспроизвести, git clone.
примеры компакт-дисков / с-redux
пряжа
начало пряжи

затем измените любой файл, например, common / components / Counter.js, HMR будет работать, но браузер выдаст следующее предупреждение

<Provider> does not support changing store on the fly. It is most likely that you see this error 
because you updated to Redux 2.x and React Redux 2.x which no longer hot reload reducers 
automatically. See https://github.com/reactjs/react-redux/releases/tag/v2.0.0 for the migration instructions.

Я попытался обойти эту ошибку в Google, но не нашел для нее никакого пищевого решения. Кому-нибудь удается это преодолеть?

Самый полезный комментарий

Добавьте key={Math.random()} prop в <Provider> . Это должно исправить это предупреждение.

Все 5 Комментарий

Я добавил следующий код в файл client.js, и он удаляет предупреждение.

if (module.hot) {
  module.hot.accept();
  module.hot.accept('./App', () => {
    hydrate(
      <Provider store={store}>
        <BrowserRouter>
          <App />
        </BrowserRouter>
      </Provider>,
      document.getElementById('app')
    );
  });
}

У кого-нибудь есть мнение об этом?

Вы можете подать PR?

Добавьте key={Math.random()} prop в <Provider> . Это должно исправить это предупреждение.

Решение @howardya здесь лучше. Использование случайного ключа заглушает предупреждение, но не меняет того факта, что хранилище воссоздается при каждом обновлении, что не поддерживается. Это может привести к некоторому нестабильному поведению, особенно если вы используете инструменты разработки redux или аналогичные.

Специально обрабатывая модуль ./App , он будет улавливать практически все обновления, кроме редукторов, которые уже обрабатываются отдельно. Это оставляет изменения в configureStore.js и client/index.js как необработанные. Вы можете либо оставить всеохватывающую функцию, которая будет перезапускать все и по-прежнему вызывать предупреждение, либо удалить ее, что приведет к перезагрузке страницы. Думаю, здесь будет правильнее второе.

Я посмотрю, как сделать для этого пиар.

Добавьте key={Math.random()} prop в <Provider> . Это должно исправить это предупреждение.

реши мою проблему! Спасибо чувак.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

dizzyn picture dizzyn  ·  3Комментарии

corydeppen picture corydeppen  ·  3Комментарии

pseudo-su picture pseudo-su  ·  3Комментарии

Jayphen picture Jayphen  ·  4Комментарии

charlie632 picture charlie632  ·  4Комментарии