热重载正在运行,但刷新 (⌘+R) 会导致 blank/white 屏幕
Hot Reload is working, but a refresh (⌘+R) leads to blank/white screen
我当前的 react-native 项目设置有一个(至少对我而言)奇怪的问题(它实际上是一个 PoC,但计划在未来使用这个结构)。
我的结构(摘录):
.
├── BaseApp
├── foobar
└── foobar2
在我的应用程序内部,我通过 yarn add ../foobar
和 yarn add ../foobar2
添加了本地模块(计划在未来的项目设置中使用 yarn-workspaces 或 callstack/haul)。这两个模块都提供了一个带有简单原生部分的 react-native 模块。
我在我的应用程序中导入模块:
import Foobar from 'foobar';
import Foobar2 from 'foobar2';
并在组件中使用它们:
const [status, setStatus] = useState('Init ...');
const [message, setMessage] = useState('---');
const [multiply, setMultiply] = useState(0);
useEffect(() => {
Foobar2.sampleMethod('Testing', 123, (message: string) => {
setStatus('Received...');
setMessage(message);
});
Foobar.multiply(3, 7).then(setMultiply);
}, []);
// ...
<Text style={styles.sectionDescription}>Status: {status}</Text>
<Text style={styles.sectionDescription}>Message: {message}</Text>
<Text style={styles.sectionDescription}>Result: {multiply}</Text>
最初应用程序加载并保持 white/blank。没有错误。没有提示可能出了什么问题。当我删除导入并重新加载(⌘+r 或在控制台中键入 r
)时,应用程序重新加载并显示有关(确实)缺少变量的错误:
如果我再次添加导入,应用程序会通过热重载 (HMR) 重新加载,瞧,它可以工作...
为什么?我无法向自己解释为什么会这样。也许有人可以帮助我理解这可能会帮助我解决“奇怪”的行为?
找到问题了。在我的例子中,我将 react-native
作为我的一个本地模块中的开发依赖项。结果,有 2 个 react-native 运行时实例导致 3 个不同的“不变违规”错误。问题:在我将调试器附加到应用程序后,我首先看到了这个错误。这使得很难找到这样的(简单的)错误并且非常令人失望:/
如果您有相同的行为而没有打印出任何错误,我希望它能帮助其他人。
我当前的 react-native 项目设置有一个(至少对我而言)奇怪的问题(它实际上是一个 PoC,但计划在未来使用这个结构)。
我的结构(摘录):
.
├── BaseApp
├── foobar
└── foobar2
在我的应用程序内部,我通过 yarn add ../foobar
和 yarn add ../foobar2
添加了本地模块(计划在未来的项目设置中使用 yarn-workspaces 或 callstack/haul)。这两个模块都提供了一个带有简单原生部分的 react-native 模块。
我在我的应用程序中导入模块:
import Foobar from 'foobar';
import Foobar2 from 'foobar2';
并在组件中使用它们:
const [status, setStatus] = useState('Init ...');
const [message, setMessage] = useState('---');
const [multiply, setMultiply] = useState(0);
useEffect(() => {
Foobar2.sampleMethod('Testing', 123, (message: string) => {
setStatus('Received...');
setMessage(message);
});
Foobar.multiply(3, 7).then(setMultiply);
}, []);
// ...
<Text style={styles.sectionDescription}>Status: {status}</Text>
<Text style={styles.sectionDescription}>Message: {message}</Text>
<Text style={styles.sectionDescription}>Result: {multiply}</Text>
最初应用程序加载并保持 white/blank。没有错误。没有提示可能出了什么问题。当我删除导入并重新加载(⌘+r 或在控制台中键入 r
)时,应用程序重新加载并显示有关(确实)缺少变量的错误:
如果我再次添加导入,应用程序会通过热重载 (HMR) 重新加载,瞧,它可以工作...
为什么?我无法向自己解释为什么会这样。也许有人可以帮助我理解这可能会帮助我解决“奇怪”的行为?
找到问题了。在我的例子中,我将 react-native
作为我的一个本地模块中的开发依赖项。结果,有 2 个 react-native 运行时实例导致 3 个不同的“不变违规”错误。问题:在我将调试器附加到应用程序后,我首先看到了这个错误。这使得很难找到这样的(简单的)错误并且非常令人失望:/
如果您有相同的行为而没有打印出任何错误,我希望它能帮助其他人。