回答:
React Native Documentationによれば、次のように設定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;
デモなどを行っているために特定のビルドで非表示にしたい場合は、Xcodeスキームを編集してリリースビルドにすると、黄色の警告が表示されなくなります。さらに、アプリの実行速度が大幅に向上します。
次のようにして、シミュレータと実際のデバイスのスキームを編集できます。
Product
> Scheme
>Edit Scheme...
Build Configuration
からDebug
に変更しRelease
ます。Release
:警告なし、そしてより速いアプリ!
Release
console.disableYellowBox = true;
上記の方法を使用して特定の警告(イエローボックスメッセージ)を無効にした場合でも、モバイルデバイスでは警告が無効になっていますが、コンソールに記録されたままであり、非常に煩わしく気が散っていました。
警告がコンソールに記録されないように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
メソッドを使用してエラー(赤いボックスのメッセージ)をログに記録すると考えているので、この手法を使用して特定のエラーを除外することもできると想定しています。
(あなた自身のコードではありません)
理由:新しいRNアプリを初期化するとき、Xcodeプロジェクトには100に近い警告が含まれており、ノイズが気になります(ただし、他の点ではおそらく無害です)。
解決策:設定されたすべての警告を抑制するにイエスのもとビルド設定、関連するターゲットのため。
私はチームによる小さなツールの開発をお勧めします。すべての警告とエラーをフロートアイコンに収集します。と比較してconsole.disableYellowBox = true;
も、警告またはエラーの場所はわかりますが、邪魔にはなりません。
WT-Console Github Repo:https : //github.com/WeBankFinTech/wt-console