用 Babel 编译 React 组件,使用的 preset 是@babel/preset-react。要实现 React 组件的热更新,需要用到 @pmmmwh/react-refresh-webpack-plugin、react-refresh。
yarn add react react-dom @babel/preset-react @pmmmwh/react-refresh-webpack-plugin react-refresh --dev
// React 组件 App.jsximport React, { Component } from "react"class App extends Component {constructor(props) {super(props)this.state = {title: "前端11",}}render() {return (<div><h2>{this.state.title}</h2></div>)}}export default App
// 入口文件import React from 'react'import ReactDOM from 'react-dom'import App from './App.jsx'if (module.hot) {module.hot.accept([], () => {})}ReactDOM.render(<App />, document.getElementById('app'))
js 和 jsx 的 loader 可以统一写成:
{test: /\.jsx?$/,exclude: /node_modules/,use: ['babel-loader']}
Babel配置文件:
// babel.config.jsmodule.exports = {presets: [['@babel/preset-env'],['@babel/preset-react'],],plugins: [['react-refresh/babel']]}
