mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
cc068b0551
Summary: I wanted to configure the RN dev menu without having to write native code. This is pretty useful in a greenfield app since it avoids having to write a custom native module for both platforms (and might enable the feature for expo too). This ended up a bit more involved than planned since callbacks can only be called once. I needed to convert the `DevSettings` module to a `NativeEventEmitter` and use events when buttons are clicked. This means creating a JS wrapper for it. Currently it does not export all methods, they can be added in follow ups as needed. ## Changelog [General] [Added] - Export the DevSettings module, add `addMenuItem` method Pull Request resolved: https://github.com/facebook/react-native/pull/25848 Test Plan: Tested in an app using the following code. ```js if (__DEV__) { DevSettings.addMenuItem('Show Dev Screen', () => { dispatchNavigationAction( NavigationActions.navigate({ routeName: 'dev', }), ); }); } ``` Added an example in RN tester  Differential Revision: D17394916 Pulled By: cpojer fbshipit-source-id: f9d2c548b09821c594189d1436a27b97cf5a5737
29 lines
891 B
JavaScript
29 lines
891 B
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow strict-local
|
|
* @format
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
import type {TurboModule} from '../../TurboModule/RCTExport';
|
|
import * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';
|
|
|
|
export interface Spec extends TurboModule {
|
|
+reload: () => void;
|
|
+setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void;
|
|
+setIsDebuggingRemotely: (isDebuggingRemotelyEnabled: boolean) => void;
|
|
+setProfilingEnabled: (isProfilingEnabled: boolean) => void;
|
|
+toggleElementInspector: () => void;
|
|
+addMenuItem: (title: string) => void;
|
|
|
|
// iOS only.
|
|
+setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void;
|
|
}
|
|
|
|
export default (TurboModuleRegistry.getEnforcing<Spec>('DevSettings'): Spec);
|