Razzle: Redux-Beispiele haben die Provider-HMR-Warnung

Erstellt am 6. Okt. 2017  ·  5Kommentare  ·  Quelle: jaredpalmer/razzle

Reproduzieren, git-Klon.
CD-Beispiele/mit-Redux
Garn
Garnstart

Ändern Sie dann eine beliebige Datei, zum Beispiel common/components/Counter.js, HMR funktioniert, aber der Browser gibt die folgende Warnung aus

<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.

Ich habe versucht, um diesen Fehler herum zu googeln, aber keine Lebensmittellösung dafür gefunden. Schafft es jemand, das zu überwinden?

Hilfreichster Kommentar

Füge key={Math.random()} Requisite zu <Provider> . Es sollte diese Warnung beheben.

Alle 5 Kommentare

Ich habe der Datei client.js den folgenden Code hinzugefügt und er entfernt die Warnung.

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

Hat jemand eine Meinung dazu?

Können Sie eine PR einreichen?

Füge key={Math.random()} Requisite zu <Provider> . Es sollte diese Warnung beheben.

Die Lösung von @howardya ist hier die bessere. Durch die Verwendung eines zufälligen Schlüssels wird die Warnung stummgeschaltet, ändert jedoch nichts an der Tatsache, dass der Store bei jedem Update neu erstellt wird, was nicht unterstützt wird. Dies kann zu seltsamem Verhalten führen, insbesondere wenn Sie Redux-Entwicklungstools oder ähnliches verwenden.

Durch die spezielle Handhabung des ./App Moduls werden praktisch alle Aktualisierungen abgefangen, mit Ausnahme der Reduzierer, die bereits separat behandelt werden. Dadurch bleiben Änderungen an configureStore.js und client/index.js selbst unbehandelt. Sie können das Catch-All entweder aktiviert lassen, was alles erneut ausführen und trotzdem die Warnung verursachen würde, oder es entfernen, was ein Neuladen der Seite auslöst. Ich denke, letzteres wäre hier richtiger.

Ich werde mir mal eine PR dazu machen.

Füge key={Math.random()} Requisite zu <Provider> . Es sollte diese Warnung beheben.

löse mein Problem! Danke, Mann.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ewolfe picture ewolfe  ·  4Kommentare

charlie632 picture charlie632  ·  4Kommentare

MaxGoh picture MaxGoh  ·  4Kommentare

mhuggins picture mhuggins  ·  3Kommentare

jcblw picture jcblw  ·  4Kommentare