我知道反应的基础知识,并且我的一些个人项目做了反应。现在我从react-native开始。
所以我创建了一个新项目并运行了run-android
命令。它完成了所有必需的处理并启动了模拟器(我使用的是Genymotion android模拟器),
react-native init AwesomeProject
cd AwesomeProject
react-native run-android
之后在模拟器中我启用了热重新加载。打开项目并稍微更改了代码。然后进入模拟器,我按r(两次),它说fetching bundle
。但我得到同样的东西。什么都没有改变。更新未更新。
所以,我关闭了终端并再次运行了同样的命令
react-native run-android
然后......它显示了变化。我不知道这里有什么问题。我看到this post并认为它可能有所帮助。但它没有。
我做错了什么?我使用的是react-native 0.30.0和Node v6.3.1。如果它对Windows 7有帮助,并运行nexus 6P作为Genymotion android模拟器。
答案 0 :(得分:3)
回答我自己的问题。 This post帮助了我。
在此文件中\ node_modules \ react-native \ node_modules \ node-haste \ lib \ FileWatcher \ index.js
MAX_WAIT_TIME
(我的是从120000变为360000)。此
key: '_createWatcher',
value: function _createWatcher(rootConfig) {
var watcher = new WatcherClass(rootConfig.dir, {
glob: rootConfig.globs,
dot: false
});
return new Promise(function (resolve, reject) {
var rejectTimeout = setTimeout(function () {
return reject(new Error(timeoutMessage(WatcherClass)));
}, MAX_WAIT_TIME);
watcher.once('ready', function () {
clearTimeout(rejectTimeout);
resolve(watcher);
});
});
}
到
key: '_createWatcher',
value: function _createWatcher(rootConfig) {
var watcher = new WatcherClass(rootConfig.dir, {
glob: rootConfig.globs,
dot: false
});
return new Promise(function (resolve, reject) {
const rejectTimeout = setTimeout(function() {
reject(new Error([
'Watcher took too long to load',
'Try running `watchman version` from your terminal',
'https://facebook.github.io/watchman/docs/troubleshooting.html',
].join('\n')));
}, MAX_WAIT_TIME);
watcher.once('ready', function () {
clearTimeout(rejectTimeout);
resolve(watcher);
});
});
}
现在这个更改后,我所做的任何代码更改,我甚至不必按两次R,它会自动更改。我希望这可能对像我这样的菜鸟有所帮助。谢谢。
答案 1 :(得分:0)
我做了两件事
1)将MAX_WAIT_TIME值更改为360000 2)在Android模拟器上执行Ctrl + M并选择"启用热重新加载"
现在,代码中的任何更改都会在模拟器中反映不到一秒钟。