【问题标题】:React Native 0.47.1: Hot reload is not reflecting code changes on MacOSReact Native 0.47.1:热重载不反映 MacOS 上的代码更改
【发布时间】:2017-09-02 11:10:56
【问题描述】:

我正在尝试使用我的 React Native 项目进行热重载。打包程序会显示消息Bundling index.ios.js ... [hmr enabled],当我进行更改时,我会在设备上看到Hot reloading... 消息闪烁,因此我确信正在检测到更改。但是,实际屏幕并未反映代码更改。实时重新加载工作正常。

我已经重新安装了节点模块并重置/卸载/重新安装了 watchman。似乎没有任何效果。

我还应该尝试什么?如何找出屏幕未更新的原因?

【问题讨论】:

  • 你试过用watchman watch-del-all清除守望者吗?
  • 现在试过了,它说我使用的是 4.9.0 并列出了我的 react-native 项目目录。仍然没有反映出任何变化。
  • 这个怎么样? rm -rf /usr/local/var/run/watchman && brew uninstall watchman && brew install watchman
  • 相同。更改仍未反映出来。
  • 您是否尝试过使用 root 运行您的打包程序?

标签: ios macos react-native


【解决方案1】:

react-native 中的当前版本 hmr 仅适用于从 React.ComponentComponent [see] 扩展的组件。换句话说,它不适用于功能组件或扩展另一个基类的组件。

  • 对于功能组件,您可以使用babel-plugin-functional-hmr
  • 如果您有自定义基类,则可以在您的.babelrc 中覆盖react-transform 插件,如下所示:

    { “预设”:[“反应原生”], “环境”:{ “发展”: { “插件”:[ [“反应转换”, { “变换”:[{ “变换”:“反应变换-hmr”, “进口”:[“反应”], “本地人”:[“模块”] }], "superClasses": ["CustomComponent", "React.Component", "Component"] } ] ] } } }

【讨论】:

  • 这对那些喜欢使用 React.PureComponent 和 React.Component 的人特别有用。谢谢
  • 我还注意到,如果您在组件内的 render() 方法之外渲染了代码,它不会热重载。
  • 在渲染方法之外渲染——你的意思是像通过返回 React 组件的函数调用吗?还是别的什么?
猜你喜欢
  • 2016-10-17
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多