android 从React Native导航迁移到React导航

ars1skjm  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(143)

我正在将一个旧项目从react-native-navigation迁移到react-navigation,但是我似乎不知道如何“注销”原始的react-native-navigation视图。
因此,我所做的是“反向”react-native-navigation的安装文档,将NavigationActivity转换回ReactActivity

// MainActivity.java
// convert back to `extends ReactActivity`
public class MainActivity extends ReactActivity {

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        // onCreate change required by react-navigation
        super.onCreate(null);
    }
}

此外,在主应用程序中:

// MainApplication.java
// get rid of `NavigationApplication`
public class MainApplication extends Application implements ReactApplication {
    private final ReactNativeHost mReactNativeHost =
            new ReactNativeHost(this) {
                @Override
                protected String getJSMainModuleName() {
                    return "index";
                }
                @Override
                public boolean getUseDeveloperSupport() {
                    return BuildConfig.DEBUG;
                }
                @Override
                public List<ReactPackage> getPackages() {
                    ArrayList<ReactPackage> packages = new PackageList(this).getPackages();
                    packages.addAll(Arrays.asList());
                    packages.add(new RNAppVersionPackage());
                    return packages;
                }
            };
    @Override
    public ReactNativeHost getReactNativeHost() {
        return mReactNativeHost;
    }
}

根据文档,这些是设置react-native-navigation所需的唯一更改,所以我希望现在可以在应用程序的index.js中注册一个普通组件,如下所示:

import {AppRegistry} from 'react-native';
import App from './src/App';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);

然而,这并不起作用。当应用程序启动时,它停留在一个空屏幕上。我想的是react-native-navigation仍然在其他地方注册一个不再存在的根组件,它不再被定义。注意,我还没有使用react-navigation的任何功能。App组件只是一个带有一些文本的视图。
有人知道我是否/在哪里需要做一些修改来完全摆脱处理应用程序根视图的react-native-navigation吗?

e0bqpujr

e0bqpujr1#

我所做的就是在同一版本上生成一个新的“干净”的react-native项目,并复制新的MainActivity.javaMainApplication.java。不要忘记更改package和导入(如果有)。还要确保MainComponentName(如果使用)与AppRegistry.registerComponent(appName, () => App);中预期的组件名称匹配
最后清除所有缓存,项目现在应该运行良好。

相关问题