我已经在现有项目中添加了react-rails,我们正在慢慢迁移以做出反应.
目前的webpacker.yml
default: &default source_path: app/javascript source_entry_path: packs public_output_path: packs cache_path: tmp/cache/webpacker # Additional paths webpack should lookup modules # ['app/assets','engine/foo/app/assets'] resolved_paths: [] # Reload manifest.json on all requests so we reload latest compiled packs cache_manifest: false extensions: - .jsx - .js - .sass - .scss - .css - .module.sass - .module.scss - .module.css - .png - .svg - .gif - .jpeg - .jpg - .tsx - .ts development: <<: *default compile: true # Reference: https://webpack.js.org/configuration/dev-server/ dev_server: https: false host: localhost port: 3035 public: localhost:3035 hmr: true # Inline should be set to true if using HMR inline: true overlay: true compress: true disable_host_check: true use_local_ip: false quiet: false headers: 'Access-Control-Allow-Origin': '*' watch_options: ignored: /node_modules/
我在一个终端启动rails应用程序,在另一个终端启动./bin/webpack-dev-server,我可以看到编译中出现的热模块:
[./node_modules/webpack-dev-server/client/index.js?http://localhost:3035] (webpack)-dev-server/client?http://localhost:3035 7.93 kB {0} {1} [built] [./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.67 kB {0} {1} [built] [./node_modules/webpack/hot/dev-server.js] (webpack)/hot/dev-server.js 1.61 kB {0} {1} [built] [./node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 77 bytes {0} {1} [built] [./node_modules/webpack/hot/log-apply-result.js] (webpack)/hot/log-apply-result.js 1.31 kB {0} {1} [built] [./node_modules/webpack/hot/log.js] (webpack)/hot/log.js 1.04 kB {0} {1} [built] [0] multi (webpack)-dev-server/client?http://localhost:3035 webpack/hot/dev-server ./app/javascript/packs/application.js 52 bytes {1} [built] [1] multi (webpack)-dev-server/client?http://localhost:3035 webpack/hot/dev-server ./app/javascript/packs/server_rendering.js 52 bytes {0} [built]
问题是我正在运行./bin/webpack-dev-server我每次更新反应文件时都会刷新整页(而不是刚更新的组件).只有在dev服务器运行时才会刷新整页.此外,在整页刷新之前,我没有看到组件更新.
解决方法
这就是Webpack HMR的工作原理,如果你想在你的反应模块上启用HMR,你可以试试
React Hot Loader和
Webpack plugin
.用纱线安装反应装置
.编辑.babelrc文件并将react-hot-loader / babel添加到插件列表中.
.使您的React组件“热”.
import React from 'react' import { hot } from 'react-hot-loader' class Example extends React.Component { } export default hot(module)(Example);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。