Answers:
根据反应本地文档,你可以通过设置隐藏警告消息disableYellowBox
,以true
这样的:
console.disableYellowBox = true;
有选择地隐藏某些警告(升级到最新和最佳RN版本后会无限期显示)的更好方法是在项目的通用JS文件中设置console.ignoredYellowBox。例如,在将我的项目今天升级到RN 0.25.1之后,我看到了很多...
警告:ReactNative.createElement已弃用...
我仍然希望能够看到来自React-Native的有用警告和错误消息,但是我想挤压这个特定警告,因为它来自尚未整合RN 0.25中重大更改的外部npm库。因此,在我的App.js中,我添加了这一行...
// RN >= 0.63
import { LogBox } from 'react-native';
LogBox.ignoreLogs(['Warning: ...']);
// RN >= 0.52
import {YellowBox} from 'react-native';
YellowBox.ignoreWarnings(['Warning: ReactNative.createElement']);
// RN < 0.52
console.ignoredYellowBox = ['Warning: ReactNative.createElement'];
这样,我仍然得到其他错误和警告,这对我的开发环境很有帮助,但是我不再看到该特定错误。
在任何组件的生命周期方法下的app.js文件中,例如componentDidmount()中,您都必须添加这两者,但任何一项都将不起作用。
console.ignoredYellowBox = ['Warning: Each', 'Warning: Failed'];
console.disableYellowBox = true;
add this line in your app main screen.
console.disableYellowBox = true;
在index.js文件中添加以下代码
console.disableYellowBox = true;
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
console.disableYellowBox = true;
AppRegistry.registerComponent(appName, () => App);
如果您要在进行演示或其他操作时将它们隐藏在特定的版本中,则可以编辑Xcode方案以使其成为发布版本,并且这些黄色警告不会显示。此外,您的应用程序将运行得更快。
您可以通过执行以下操作为模拟器和真实设备编辑方案:
Product
> Scheme
>Edit Scheme...
Build Configuration
从更改Debug
为Release
。Release
:无警告,更快的应用程序!
Release
console.disableYellowBox = true;
这适用于应用程序级别将其放在index.js文件中的任何位置
console.ignoredYellowBox = ['警告:每个','警告:失败'];
我发现,即使我使用上述方法禁用了特定警告(黄框消息),这些警告在我的移动设备上也被禁用,但是它们仍被记录到控制台,这非常令人讨厌和分散注意力。
为了防止将警告记录到控制台,您可以简单地覆盖对象warn
上的方法console
。
// This will prevent all warnings from being logged
console.warn = () => {};
通过测试提供的消息,甚至可以仅禁用特定的警告:
// Hold a reference to the original function so that it can be called later
const originalWarn = console.warn;
console.warn = (message, ...optionalParams) => {
// Insure that we don't try to perform any string-only operations on
// a non-string type:
if (typeof message === 'string') {
// Check if the message contains the blacklisted substring
if (/Your blacklisted substring goes here/g.test(message))
{
// Don't log the value
return;
}
}
// Otherwise delegate to the original 'console.warn' function
originalWarn(message, ...optionalParams);
};
如果您不能(或不想)使用正则表达式来测试字符串,则该indexOf
方法将同样有效:
// An index of -1 will be returned if the blacklisted substring was NOT found
if (message.indexOf('Your blacklisted substring goes here') > -1) {
// Don't log the message
return;
}
请注意,此技术将过滤通过函数的所有消息,warn
无论它们来自何处。因此,请注意不要指定过多的黑名单,以免抑制其他可能源自React Native之外的其他有意义的错误。
另外,我相信React Native使用该console.error
方法来记录错误(红色框消息),因此我假设该技术也可以用于滤除特定错误。
在您的AppDelegate.m文件中,您可以更改以下行:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
并在最后替换dev=true
为dev=false
。
(但不适用于您自己的代码)
原因:初始化新的RN应用时,Xcode项目包含接近100条警告,这些警告分散了噪音(但可能无害)
解决方案:设置禁止所有警告到是下生成设置的相关目标。
我推荐我们团队的一个小型工具开发人员,它将所有警告和错误收集到浮动图标中。与相比console.disableYellowBox = true;
,您仍然可以看到警告或错误在哪里,但不会打扰您。
WT-Console Github存储库:https : //github.com/WeBankFinTech/wt-console