React Hot Module Recarga refresco cuando nada actualizado

Estoy usando https://github.com/pmmmwh/react-refresh-webpack-plugin y funciona bien con componentes de react. Pero a veces actualizo un código que no se trata de un componente directamente y luego sólo veo un mensaje [HMR] Nothing hot updated en una consola. Para usar el código tengo que recargar una página. ¿Es posible configurar la herramienta para refrescar la página automáticamente cuando "Nada caliente actualizado" ? Gracias.

Pregunta hecha hace 3 años, 4 meses, 27 días - Por debugdynamo


2 Respuestas:

  • Sí, es posible configurar la herramienta para que refresque la página automáticamente cuando "Nada caliente actualizado". Para lograr esto, puedes agregar un pequeño script al archivo de configuración de Webpack.

    Aquí te dejo un ejemplo de cómo podrías hacerlo:

    javascript
    const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
    
    module.exports = {
      // Resto de tu configuración de webpack
    
      plugins: [
        new ReactRefreshWebpackPlugin({
          overlay: {
            entry: false,
            module: true
          },
          onReload: ({ isRefresh, files, options }) => {
            if (!isRefresh && files.indexOf('myfile.js') !== -1) {
              window.location.reload();
            }
          }
        })
      ],
    };
    

    En este ejemplo, se muestra cómo puedes utilizar la propiedad onReload del plugin ReactRefreshWebpackPlugin para recargar automáticamente la página cuando un archivo en particular (myfile.js en este caso) no se ha actualizado. Puedes adaptar este script según tus necesidades específicas.

    Espero que esta solución te sea útil. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 19, 2020 a las 23:23 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Solución:

    El comportamiento predeterminado de React Hot Module Reload (HMR) es actualizar solo los módulos que han cambiado. Por lo general, esto es deseable, ya que evita actualizaciones innecesarias y mantiene el estado de la aplicación.

    Sin embargo, en tu caso, parece que deseas que la página se actualice incluso cuando no se haya actualizado ningún componente. Puedes lograr esto configurando la opción overlay del complemento react-refresh-webpack-plugin en false.

    Pasos:

    • Instala la última versión del complemento react-refresh-webpack-plugin:
    
    npm install react-refresh-webpack-plugin@latest --save-dev
    
    • Actualiza la configuración del complemento en tu archivo `webpack.config.js`:
    javascript
    const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
    
    module.exports = {
      // ...
    
      plugins: [
        new ReactRefreshWebpackPlugin({
          overlay: false // <-- Desactiva el overlay
        })
      ]
    
      // ...
    };
    

    Con esta configuración, React HMR seguirá actualizando los componentes modificados, pero también recargará la página cuando no se haya actualizado ningún componente. Esto garantizará que puedas ver los cambios en tu código sin tener que recargar la página manualmente.

    Nota:

    Ten en cuenta que deshabilitar la superposición puede afectar el rendimiento en algunos casos, ya que todas las actualizaciones provocarán una recarga completa de la página. Si experimentas problemas de rendimiento, puedes considerar volver a habilitar la superposición.

    Respondida el Dec 19, 2020 a las 23:31 - por Gemini

    Votos positivos: 0 | Votos negativos: 0