Ik heb zojuist mijn React Native geüpgraded en nu heeft de iOS-simulator een heleboel waarschuwingen. Hoe verberg ik deze waarschuwingen naast het oplossen ervan, zodat ik kan zien wat eronder zit?
Antwoord 1, autoriteit 100%
Volgens React Native Documentatiekunt u waarschuwingsberichten verbergen door disableYellowBox
naar true
als volgt:
console.disableYellowBox = true;
Update: React Native 0.63+
console.disableYellowBox
is verwijderd en u kunt nu het volgende gebruiken:
import { LogBox } from 'react-native';
LogBox.ignoreLogs(['Warning: ...']); // Ignore log notification by message
LogBox.ignoreAllLogs();//Ignore all log notifications
om alle logmeldingen te negeren
Antwoord 2, autoriteit 42%
Een betere manier om selectief bepaalde waarschuwingen te verbergen (die voor onbepaalde tijd verschijnen na een upgrade naar de nieuwste en beste RN-versie) is door console.ignoredYellowBoxin een algemeen JS-bestand in uw project. Bijvoorbeeld, na het upgraden van mijn project vandaag naar RN 0.25.1 zag ik veel…
Waarschuwing: ReactNative.createElement is verouderd…
Ik wil nog steeds nuttige waarschuwingen en foutmeldingen van React-Native kunnen zien, maar ik wil deze specifieke waarschuwing vernietigen omdat deze afkomstig is van een externe npm-bibliotheek die de belangrijkste wijzigingen in RN 0.25 nog niet heeft verwerkt. Dus in mijn App.js voeg ik deze regel toe…
// 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'];
Op deze manier krijg ik nog steeds andere fouten en waarschuwingen die nuttig zijn voor mijn ontwikkelomgeving, maar ik zie die specifieke niet meer.
Antwoord 3, autoriteit 8%
Om de gele box-plaats uit te schakelen
console.disableYellowBox = true;
overal in uw toepassing. Meestal in het hoofdbestand, dus het is van toepassing op zowel iOS als Android.
Bijvoorbeeld
export default class App extends React.Component {
render() {
console.disableYellowBox = true;
return (<View></View>);
}
}
Antwoord 4, autoriteit 5%
add this line in your app main screen.
console.disableYellowBox = true;
bijvoorbeeld:- in index.js-bestand
import { AppRegistry } from 'react-native';
import './src/utils';
import App from './App';
import { name as appName } from './app.json';
AppRegistry.registerComponent(appName, () => App);
console.disableYellowBox = true;
Antwoord 5, autoriteit 4%
In uw app.js-bestand onder de levenscyclusmethode van een component. zoals in componentDidmount()
je moet deze beide toevoegen, met uitzondering van een werkt niet.
console.ignoredYellowBox = ['Warning: Each', 'Warning: Failed'];
console.disableYellowBox = true;
Antwoord 6, autoriteit 4%
Voeg de volgende code toe aan uw index.js-bestand
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);
Antwoord 7, autoriteit 3%
Als u de app snelwilt demonstreren.
Als je ze in een bepaalde build wilt verbergen omdat je een demo doet of zoiets, kun je je Xcode-schema bewerken om er een release-build van te maken en deze gele waarschuwingen zullen niet verschijnen. Bovendien werkt je app veel sneller.
U kunt het schema voor uw simulator en uw echte apparaat als volgt bewerken:
- In Project in XCode.
Product
>Scheme
>Edit Scheme...
- Verander
Build Configuration
vanDebug
inRelease
.
Antwoord 8, autoriteit 2%
Voor degenen die deze kant op komen en proberen rode waarschuwingen van de console uit te schakelen, die absoluut nutteloze informatie geven, vanaf 17 feb, kun je deze regel code ergens toevoegen
console.error = (error) => error.apply;
Alle console.error
uitschakelen
Antwoord 9, autoriteit 2%
console.disableYellowBox = true;
dit werkte voor applicatieniveau. Zet het ergens in het index.js-bestand
Antwoord 10, autoriteit 2%
Voor mij werkten onderstaande regels momenteel, ik gebruik react native 0.64
import { LogBox } from 'react-native';
LogBox.ignoreLogs(['Warning: ...']); //Hide warnings
LogBox.ignoreAllLogs();//Hide all warning notifications on front-end
Als je je waarschuwing toevoegt om precies aan te geven welke waarschuwing je moet onderdrukken, moet je exacthet waarschuwingsbericht toevoegen, zoals (willekeurig voorbeeld)
LogBox.ignoreLogs([
'Warning: Failed prop type: Invalid props.style key `tintColor` supplied to `Text`.',
]);
Het gebruik van enkele aanhalingstekens in plaats van backticks rond tintColor
of Text
zal bijvoorbeeld niet werken.
Antwoord 11, autoriteit 2%
Ik ontdekte dat zelfs wanneer ik specifieke waarschuwingen (gele-box-berichten) uitschakelde met behulp van de bovengenoemde methoden, de waarschuwingen werdenuitgeschakeld op mijn mobiele apparaat, maar ze werden nog steeds op mijn console vastgelegd, wat erg vervelend en afleidend was.
Om te voorkomen dat waarschuwingen op uw console worden vastgelegd, kunt u eenvoudig de methode warn
op het console
-object overschrijven.
// This will prevent all warnings from being logged
console.warn = () => {};
Het is zelfs mogelijk om alleen specifieke waarschuwingen uit te schakelen door het opgegeven bericht te testen:
// 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);
};
Als u geen reguliere expressie kunt (of wilt) gebruiken om de tekenreeks te testen, werkt de methode indexOf
net zo goed:
// 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;
}
Houd er rekening mee dat deze techniek alleberichten filtert die door de warn
-functie gaan, ongeacht waar ze vandaan komen.
Wees daarom voorzichtig dat u geen al te royale zwarte lijst opgeeft die andere zinvolle fouten onderdrukt die ergens anders vandaan kunnen komen dan React Native.
Ik geloof ook dat React Native de methode console.error
gebruikt om fouten te loggen (red-box-berichten), dus ik neem aan dat deze techniek kan worden gebruikt om specifieke fouten uit te filteren als goed.
Antwoord 12
Om het gele vak uit te schakelen, plaatst u console.disableYellowBox = true;
ergens in uw toepassing. Meestal in het hoofdbestand, dus het is van toepassing op zowel iOS als Android.
Raadpleeg voor meer informatie het officieel document
Antwoord 13
console.disableYellowBox = true;
Antwoord 14
RN >= 0,62
import {LogBox} from 'react-native'
voeg onder de import toe
LogBox.ignoreLogs(['...']);
in plaats van ‘…’,
u kunt de waarschuwingen schrijven die u wilt verbergen.
Bijvoorbeeld,
Ik had de waarschuwing dat VirtualizedLists nooit zou mogen zijn ….
dan kan ik schrijven als
LogBox.ignoreLogs(['VirtualizedLists']);
als u nog een fout wilt toevoegen, kunt u schrijven als
LogBox.ignoreLogs(['VirtualizedLists','Warning:...']);
Antwoord 15
console.ignoredYellowBox = [‘Waarschuwing: elk’, ‘Waarschuwing: mislukt’];
Antwoord 16
In uw AppDelegate.m-bestand kunt u deze regel wijzigen:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
en vervang dev=true
door dev=false
aan het einde.
Antwoord 17
Gerelateerd: Xcode-waarschuwingen van React Native-bibliotheek onderdrukken
(maar niet voor je eigen code)
waarom:bij het initialiseren van een nieuwe RN-app bevat het Xcode-project bijna 100 waarschuwingen die storende ruis zijn (maar anders waarschijnlijk onschadelijk)
oplossing:stel alle waarschuwingen uitin op jaonder Build Settingsvoor de relevante doelen.
Waarschuwingen in Xcode van frameworks uitschakelen
https://github.com/facebook/react-native/issues/11736
Antwoord 18
Ik zet graag de console.disableYellowBox = true in de bestandsroot, zoals App.
Maar dit is net nu ik in de ontwikkelingsfase zit.