我正在开发一个反应原生的IOS应用程序,这个应用程序有时会引发一条警告消息“setState(...)只能更新已安装或安装的组件。...”,我明白了这个消息是的,它是由AJAX长时间调用引起的。
考虑到这个警告不会对APP造成任何严重问题,我现在不想花太多时间来修复它,这个警告信息会在从开发服务器加载时出现在模拟器和手机中。我的问题是警告消息是否仍然会以产品模式提示(从预先捆绑的文件中加载)?如果它仍然显示,如何从配置中禁用此警告消息?
感谢。
答案 0 :(得分:8)
更好的解决方案是在/
文件中写下这个:
/qwerty
/asd-a1
/month/december
/posts/1
/users/id/1
/rand-om/text-1/word
答案 1 :(得分:2)
要仅禁用此警告消息,请在可能的文件上使用以下代码
console.ignoredYellowBox = ['Warning: setState(...)'];
答案 2 :(得分:1)
仅禁用setState消息
" setState(...)只能更新已安装或安装的组件。"从4个可能的文件中抛出:
- node_modules /反应/ DIST /反应与 - addons.js
- node_modules /反应/ DIST / react.js
- node_modules /反应/ LIB / ReactNoopUpdateQueue.js
- node_modules /反应/ LIB / ReactUpdateQueue.js
醇>
我不知道哪一个触发了您的,但您可以修改这些文件以不显示警告。如果您关注的是您的用户,也就是说在发布模式下,则dev标志为false,这意味着不会看到任何警告消息。
停用所有警告
要禁用警告,只需在AppDelegate.m中更改此内容:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
到
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=false"];
如果您正在使用预先捆绑的文件,则在捆绑时您必须将dev指定为false:
react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios
答案 3 :(得分:1)
回答你问的问题,不,当您从预先捆绑的文件加载时(例如使用TestFlight进行测试时),警告不会显示。
答案 4 :(得分:1)
对于远程调试器
console.ignoredYellowBox = ['Remote debugger'];
并提供所有警告
console.disableYellowBox = true;
答案 5 :(得分:0)
我编辑了我的App.js文件并添加了这个:
console.ignoredYellowBox = ['Warning: Can only update a mounted', '-[EXCamera updateFocusDepth'];
您可以提供一系列您想要忽略的事物。只需提供您要忽略的前缀,不需要“*”或其他通配符。