Reproducir, clon git.
cd ejemplos / con-redux
hilo
comienzo del hilo
luego cambie cualquier archivo, por ejemplo, common / components / Counter.js, HMR funcionará, pero el navegador emitirá la siguiente advertencia
<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.
He intentado buscar en Google este error, pero no encuentro ninguna solución alimentaria. ¿Alguien logra superar esto?
Agregué el siguiente código al archivo client.js y elimina la advertencia.
if (module.hot) {
module.hot.accept();
module.hot.accept('./App', () => {
hydrate(
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
document.getElementById('app')
);
});
}
¿Alguien tiene alguna opinión de esto?
¿Puedes enviar un PR?
Agregue key={Math.random()}
prop a <Provider>
. Debería solucionar esta advertencia.
La solución de @howardya es la mejor aquí. El uso de una clave aleatoria silencia la advertencia, pero no cambia el hecho de que la tienda se está recreando en cada actualización, que es lo que no es compatible. Puede conducir a un comportamiento inestable, especialmente si está utilizando redux dev-tools o similar.
Al manejar específicamente el módulo ./App
, capturará prácticamente todas las actualizaciones excepto los reductores, que ya se manejan por separado. Eso deja los cambios en configureStore.js
y client/index.js
como no manejados. Puede dejar el catch-all adentro, que volvería a ejecutar todo y aún causar la advertencia, o eliminarlo, lo que desencadena una recarga de la página. Creo que esto último sería más correcto aquí.
Echaré un vistazo a hacer un PR para esto.
Agregue
key={Math.random()}
prop a<Provider>
. Debería solucionar esta advertencia.
resuelve mi problema! gracias hombre.
Comentario más útil
Agregue
key={Math.random()}
prop a<Provider>
. Debería solucionar esta advertencia.