mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-02 22:41:18 +08:00
Summary:
Allow end users to access the YellowBox API so that warnings can be properly ignored via the API first introduced in a974c140db. Based on that API, you should be able to do the following:
```
import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Warning: ...']);
```
However, if you actually try this today, it results in a broken import error.
Verified using an expo instance. First tried without the YellowBox import, observed a failure to import. Then I added the import statement, and observed no warning on my device.
```
import React from 'react';
import { StyleSheet, Text, View, YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['hey']);
export default class App extends React.Component {
render() {
console.warn('hey!');
return (
<View style={styles.container}>
<Text>Open up App.js to start working on your app!</Text>
<Text>Changes you make will automatically reload.</Text>
<Text>Shake your phone to open the developer menu.</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
```
[GENERAL] [ENHANCEMENT] [YellowBox] - Export YellowBox API so warnings can be ignored using a non-deprecated API.
Closes https://github.com/facebook/react-native/pull/16709
Differential Revision: D6254819
Pulled By: hramos
fbshipit-source-id: ff92f32e4dedfb01f6902f54fabc62eb64468554
135 lines
6.6 KiB
JavaScript
135 lines
6.6 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
* @providesModule react-native-implementation
|
|
* @flow
|
|
*/
|
|
'use strict';
|
|
|
|
const invariant = require('fbjs/lib/invariant');
|
|
|
|
// Export React, plus some native additions.
|
|
const ReactNative = {
|
|
// Components
|
|
get AccessibilityInfo() { return require('AccessibilityInfo'); },
|
|
get ActivityIndicator() { return require('ActivityIndicator'); },
|
|
get ART() { return require('ReactNativeART'); },
|
|
get Button() { return require('Button'); },
|
|
get CheckBox() { return require('CheckBox'); },
|
|
get DatePickerIOS() { return require('DatePickerIOS'); },
|
|
get DrawerLayoutAndroid() { return require('DrawerLayoutAndroid'); },
|
|
get FlatList() { return require('FlatList'); },
|
|
get Image() { return require('Image'); },
|
|
get ImageBackground() { return require('ImageBackground'); },
|
|
get ImageEditor() { return require('ImageEditor'); },
|
|
get ImageStore() { return require('ImageStore'); },
|
|
get KeyboardAvoidingView() { return require('KeyboardAvoidingView'); },
|
|
get ListView() { return require('ListView'); },
|
|
get MaskedViewIOS() { return require('MaskedViewIOS'); },
|
|
get Modal() { return require('Modal'); },
|
|
get NavigatorIOS() { return require('NavigatorIOS'); },
|
|
get Picker() { return require('Picker'); },
|
|
get PickerIOS() { return require('PickerIOS'); },
|
|
get ProgressBarAndroid() { return require('ProgressBarAndroid'); },
|
|
get ProgressViewIOS() { return require('ProgressViewIOS'); },
|
|
get SafeAreaView() { return require('SafeAreaView'); },
|
|
get ScrollView() { return require('ScrollView'); },
|
|
get SectionList() { return require('SectionList'); },
|
|
get SegmentedControlIOS() { return require('SegmentedControlIOS'); },
|
|
get Slider() { return require('Slider'); },
|
|
get SnapshotViewIOS() { return require('SnapshotViewIOS'); },
|
|
get Switch() { return require('Switch'); },
|
|
get RefreshControl() { return require('RefreshControl'); },
|
|
get StatusBar() { return require('StatusBar'); },
|
|
get SwipeableFlatList() { return require('SwipeableFlatList'); },
|
|
get SwipeableListView() { return require('SwipeableListView'); },
|
|
get TabBarIOS() { return require('TabBarIOS'); },
|
|
get Text() { return require('Text'); },
|
|
get TextInput() { return require('TextInput'); },
|
|
get ToastAndroid() { return require('ToastAndroid'); },
|
|
get ToolbarAndroid() { return require('ToolbarAndroid'); },
|
|
get Touchable() { return require('Touchable'); },
|
|
get TouchableHighlight() { return require('TouchableHighlight'); },
|
|
get TouchableNativeFeedback() { return require('TouchableNativeFeedback'); },
|
|
get TouchableOpacity() { return require('TouchableOpacity'); },
|
|
get TouchableWithoutFeedback() { return require('TouchableWithoutFeedback'); },
|
|
get View() { return require('View'); },
|
|
get ViewPagerAndroid() { return require('ViewPagerAndroid'); },
|
|
get VirtualizedList() { return require('VirtualizedList'); },
|
|
get WebView() { return require('WebView'); },
|
|
|
|
// APIs
|
|
get ActionSheetIOS() { return require('ActionSheetIOS'); },
|
|
get Alert() { return require('Alert'); },
|
|
get AlertIOS() { return require('AlertIOS'); },
|
|
get Animated() { return require('Animated'); },
|
|
get AppRegistry() { return require('AppRegistry'); },
|
|
get AppState() { return require('AppState'); },
|
|
get AsyncStorage() { return require('AsyncStorage'); },
|
|
get BackAndroid() { return require('BackAndroid'); }, // deprecated: use BackHandler instead
|
|
get BackHandler() { return require('BackHandler'); },
|
|
get CameraRoll() { return require('CameraRoll'); },
|
|
get Clipboard() { return require('Clipboard'); },
|
|
get DatePickerAndroid() { return require('DatePickerAndroid'); },
|
|
get DeviceInfo() { return require('DeviceInfo'); },
|
|
get Dimensions() { return require('Dimensions'); },
|
|
get Easing() { return require('Easing'); },
|
|
get findNodeHandle() { return require('ReactNative').findNodeHandle; },
|
|
get I18nManager() { return require('I18nManager'); },
|
|
get ImagePickerIOS() { return require('ImagePickerIOS'); },
|
|
get InteractionManager() { return require('InteractionManager'); },
|
|
get Keyboard() { return require('Keyboard'); },
|
|
get LayoutAnimation() { return require('LayoutAnimation'); },
|
|
get Linking() { return require('Linking'); },
|
|
get NativeEventEmitter() { return require('NativeEventEmitter'); },
|
|
get NetInfo() { return require('NetInfo'); },
|
|
get PanResponder() { return require('PanResponder'); },
|
|
get PermissionsAndroid() { return require('PermissionsAndroid'); },
|
|
get PixelRatio() { return require('PixelRatio'); },
|
|
get PushNotificationIOS() { return require('PushNotificationIOS'); },
|
|
get Settings() { return require('Settings'); },
|
|
get Share() { return require('Share'); },
|
|
get StatusBarIOS() { return require('StatusBarIOS'); },
|
|
get StyleSheet() { return require('StyleSheet'); },
|
|
get Systrace() { return require('Systrace'); },
|
|
get TimePickerAndroid() { return require('TimePickerAndroid'); },
|
|
get TVEventHandler() { return require('TVEventHandler'); },
|
|
get UIManager() { return require('UIManager'); },
|
|
get unstable_batchedUpdates() { return require('ReactNative').unstable_batchedUpdates; },
|
|
get Vibration() { return require('Vibration'); },
|
|
get VibrationIOS() { return require('VibrationIOS'); },
|
|
get YellowBox() { return require('YellowBox'); },
|
|
|
|
// Plugins
|
|
get DeviceEventEmitter() { return require('RCTDeviceEventEmitter'); },
|
|
get NativeAppEventEmitter() { return require('RCTNativeAppEventEmitter'); },
|
|
get NativeModules() { return require('NativeModules'); },
|
|
get Platform() { return require('Platform'); },
|
|
get processColor() { return require('processColor'); },
|
|
get requireNativeComponent() { return require('requireNativeComponent'); },
|
|
get takeSnapshot() { return require('takeSnapshot'); },
|
|
|
|
// Prop Types
|
|
get ColorPropType() { return require('ColorPropType'); },
|
|
get EdgeInsetsPropType() { return require('EdgeInsetsPropType'); },
|
|
get PointPropType() { return require('PointPropType'); },
|
|
get ViewPropTypes() { return require('ViewPropTypes'); },
|
|
|
|
// Deprecated
|
|
get Navigator() {
|
|
invariant(
|
|
false,
|
|
'Navigator is deprecated and has been removed from this package. It can now be installed ' +
|
|
'and imported from `react-native-deprecated-custom-components` instead of `react-native`. ' +
|
|
'Learn about alternative navigation solutions at http://facebook.github.io/react-native/docs/navigation.html'
|
|
);
|
|
},
|
|
};
|
|
|
|
module.exports = ReactNative;
|