Как я могу включить замену горячего модуля(HMR) в react?

#javascript #reactjs #webpack #hot-module-replacement

Вопрос:

Поставляется ли приложение create-react со встроенной поддержкой HMR? Я видел, как приложение react перезагружается при изменениях. Но это не ХМР. Какую конфигурацию веб-пакета мне нужно добавить, чтобы включить HMR. Я читал в Интернете о настройке hot параметра в webpack-dev-serve true . Меня смущает HMR в react.

После недолгих поисков я наткнулся на это

 import React from 'react'
import ReactDOM from 'react-dom'
import App from './components/App'

// Opt-in to Webpack hot module replacement
if (module.hot) module.hot.accept()

ReactDOM.render(
  <App />,
  document.getElementById('app')
)
 

Затем он говорит добавить HotModuleReplacementPlugin в webpack.config.js
Нужно ли мне добавлять его вручную, или он будет добавлен заранее. Также я читал, что использует react ReactRefreshWebpackPlugin . Я в замешательстве, пожалуйста, помогите.

Ответ №1:

Вы можете найти ответ на свой вопрос здесь: https://www.youtube.com/watch?v=f-ctxG2qEpsamp;t=279s

Если вы хотите настроить HMR с нуля, взгляните на это: https://github.com/pmmmwh/react-refresh-webpack-plugin/

Не забудьте добавить эту строку в devServer:

 devServer: {
    hot: true,
    liveReload: false,
},
 

Для рабочего примера взгляните на это репо: https://github.com/matheus4lves/react-pagination

Ответ №2:

Используя webpack-dev-сервер, мы можем настроить замену горячих модулей с помощью React. Это означает, что всякий раз, когда мы изменяем компонент и сохраняем файл, webpack заменит модуль на странице без перезагрузки, без потери состояния компонента.

 npm install react-hot-loader --save-dev
 

Чтобы использовать загрузчик react-hot-loader, мы можем просто добавить его в массив загрузчиков в объекте загрузчика.

 {
  test: /.js$/,
  exclude: /node_modules/,
  loaders: ["react-hot", "babel-loader"],
}
 

Всякий раз, когда обнаруживаются соответствующие файлы, они сначала передаются через react-hot, а затем через babel-загрузчик.

Наконец, нам нужно запустить webpack-dev-сервер с двумя новыми опциями:

 webpack-dev-server --hot --inline
 

P. S

Перед этим нам необходимо настроить webpack-dev-сервер, для этого нам необходимо установить webpack-dev-сервер как локально, так и глобально. Вы можете установить его с помощью следующей команды:

 npm install webpack-dev-server --global

npm install webpack-dev-server --save-dev
 

Комментарии:

1. Разве настройка проекта с create-react-app включенным по умолчанию не включена?