React Native 中的快速刷新总是完全重新加载应用程序

Eli*_*ski 6 react-native expo hot-reload expo-cli fast-refresh

这个问题在这里被问了好几次(这里是最相关的另一个例子),但没有提出任何解决方案。所以我有两个问题要问你们:

  1. 知道为什么它在大型项目中不起作用吗?我的意思是,与项目大小或他包含的包相关的快速刷新是否存在任何已知问题,这些问题会使快速刷新停止工作?有什么办法可以解决吗?
  2. 是否有一种方便的方法可以在不使用快速刷新的情况下编辑应用程序中的内部页面(无需独立运行页面,因为它取决于应用程序的所有逻辑)?

这个bug真的让我的开发真的很困难,我很难相信专业开发人员还没有找到解决这个问题的方法,请帮助!

我正在使用 expo-cli(v3.26.2 - Expo SDK 38 that using react-native v0.62)

Eli*_*ski 14

TLDR;

使用没有名称的默认导出总是会导致完全重新加载应用程序而无需热重新加载!

细节

所以经过几个月的痛苦之后,我偶然发现了一个足够奇怪的效果:我通常用这种语法编写我的反应组件:

export default ({ ...props }) => {
  ...
};
Run Code Online (Sandbox Code Playgroud)

并且出于某种原因,更改以这种方式导出的模块总是会导致应用程序的完全重新加载而无需热重新加载!

经过几个月的痛苦,我意外地发现将导出更改为:

const Test = ({ ...props }) => {
  ...
};

export default Test;
Run Code Online (Sandbox Code Playgroud)

完全解决了这个问题,现在热重载工作得很好!
我没有看到互联网上一个地方提到过这种效果!

  • 这对我也有用。我不明白的是,我使用的是没有名称的默认导出,没有任何问题,但在某些时候它开始在每次保存时重新加载应用程序。我尝试按照上面的描述命名该组件,果然它可以工作......这肯定还有其他的东西,但这对我现在有很大帮助。感谢您发布解决方案! (2认同)
  • @Hugo 我也在使用 React Navigation,这个修复也对我有用。也许 React Navigation 的工作方式与这种行为有关。 (2认同)