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?
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.
Hilfreichster Kommentar
Füge
key={Math.random()}
Requisite zu<Provider>
. Es sollte diese Warnung beheben.