android - 使用 expo kit 在 React Native 中加载自定义原生组件

标签 android reactjs react-native expo

我正在尝试加载自定义 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 的屏幕时,我收到此错误:

enter image description here

总结一下这个问题是我的自定义原生组件没有被 React Native 读取。有人可以帮帮我吗?

最佳答案

默认情况下,Expo 不支持任何自定义 native 模块。这是因为它们有一个单独的 perbuilt 二进制文件,并且它们只加载您编写的 JS 包。所以你用 Expo 写的任何代码都只能是纯 Javascript。 但是 Expo 文档确实说您可以在分离后添加自定义 native 模块。 更多信息在这里:

https://docs.expo.io/versions/latest/guides/detach.html#should-i-detach

https://docs.expo.io/versions/latest/introduction/faq.html#what-is-the-difference-between-expo-and-react-native

https://github.com/expo/expo/issues/56

关于android - 使用 expo kit 在 React Native 中加载自定义原生组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016259/

相关文章:

android - SQLite 跨表跨列排序

javascript - Leaflet ReactJS Map 未完全显示图 block

html - 如何在图像上显示文本并在溢出时向上流动该文本?

javascript - React 路由器错误(失败的 prop 类型 : Invalid prop `children` supplied to `Switch` , 需要一个 ReactNode。)

javascript - Detox:使用多个元素匹配器会导致错误

javascript - 填写网站数据并单击按钮并解析响应

javascript - 如果 Crosswalk 更新其内部浏览器,我的应用程序会丢失 localStorage 数据吗?

android - AchartEngine Android 专用饼图

android - React Native 中是否可以自定义 Picker 的宽度?

javascript - 多个 React-Native 组件的可重用动画