我正在尝试加载自定义 Android WebView 以便能够使用 html 文件输入上传文件(默认情况下 Android webview 不会使用输入文件)。 Im using this code ,唯一的区别是我使用的是 expo kit,所以我的 MainApplication.java 是不同的(默认情况下继承自另一个类):
public class MainApplication extends MultiDexApplication {
// Needed for `react-native link`
public List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new CustomWebViewPackage()
);
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
基本上 git 代码所做的是覆盖默认的 react native webview 以使其在 Android 中使用 CustomWebView.java,将 requireNativeComponent 与此代码 (this is on CustomWebView.android.js) 结合使用:
var RCTWebView = requireNativeComponent('CustomWebView', WebView, {
nativeOnly: {
messagingEnabled: PropTypes.bool,
},
});
但是当我使用 exp start 运行应用程序并导航到具有 CustomWebView 的屏幕时,我收到此错误:
总结一下这个问题是我的自定义原生组件没有被 React Native 读取。有人可以帮帮我吗?
最佳答案
默认情况下,Expo 不支持任何自定义 native 模块。这是因为它们有一个单独的 perbuilt 二进制文件,并且它们只加载您编写的 JS 包。所以你用 Expo 写的任何代码都只能是纯 Javascript。 但是 Expo 文档确实说您可以在分离后添加自定义 native 模块。 更多信息在这里:
https://docs.expo.io/versions/latest/guides/detach.html#should-i-detach
关于android - 使用 expo kit 在 React Native 中加载自定义原生组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016259/