我正在将一个旧项目从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
吗?
1条答案
按热度按时间e0bqpujr1#
我所做的就是在同一版本上生成一个新的“干净”的react-native项目,并复制新的
MainActivity.java
和MainApplication.java
。不要忘记更改package
和导入(如果有)。还要确保MainComponentName
(如果使用)与AppRegistry.registerComponent(appName, () => App);
中预期的组件名称匹配最后清除所有缓存,项目现在应该运行良好。