将项目添加到Android React Native开发者菜单

8

在React Native中进行开发构建时,您可以摇晃设备或使用菜单按钮来打开开发人员菜单。如何添加其他自定义项目到这个菜单中呢?我没有找到任何关于添加另一个项目的文档,但我认为从开发人员菜单中切换服务器环境(dev,prod等)而不是制作单独的构建来测试每个环境将非常方便。


我认为没有任何文档,但看起来它在这里:https://github.com/facebook/react-native/blob/master/React/Modules/RCTDevMenu.m - Dan Leveille
@DanLeveille 看起来链接已经失效了 :( - Can Poyrazoğlu
2个回答

8
你可以使用 DevSettingsaddMenuItem 函数在 React Native 开发者菜单中添加项目。在你的主要 App.js 组件中编写以下内容:
import { DevSettings } from 'react-native';

//...

useEffect(() => {
    // componentDidMount

    // Add our toggle command to the menu
    DevSettings.addMenuItem('Toggle Storybook', () => {
        // Perform your logic here
    });
}, []);

2
DevSupportManager 类可以帮助您完成这项工作。您可以通过 ReactNativeHost 实例的 ReactInstanceManager 获取它:
ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
DevSupportManager devSupportManager = reactInstanceManager.getDevSupportManager();

有了这个,按照以下步骤添加自定义开发选项:
```html

有了这个,按照以下步骤添加自定义开发选项:

```
devSupportManager.addCustomDevOption("Custom dev option", new DevOptionHandler() {
    @Override
    public void onOptionSelected() {
        Toast.makeText(MainActivity.this, "Hello from custom dev option", Toast.LENGTH_SHORT).show();
    }
});

你如何获取你的 ReactNativeHost 实例取决于你如何组织你的应用程序。如果你使用 react-native init 创建了应用程序,你的主应用程序类将包含以下内容:

@Override
public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
}

...你可以称之为。

我在这里有一个完整的示例,请查看MainActivity。在OnCreate方法中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MainApplication application = (MainApplication) getApplication();
    ReactNativeHost reactNativeHost = application.getReactNativeHost();
    ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager();
    DevSupportManager devSupportManager = reactInstanceManager.getDevSupportManager();
    devSupportManager.addCustomDevOption("Custom dev option", new DevOptionHandler() {
        @Override
        public void onOptionSelected() {
            Toast.makeText(MainActivity.this, "Hello from custom dev option", Toast.LENGTH_SHORT).show();
        }
    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接