问题标签 [react-native-native-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
964 浏览

ios - 方法不是公认的客观 c 方法

很多问题都被问到同样的问题,但没有一个能解决我的错误。

这是我的目标c文件

这是我的快速课程

这是我来自 React Native 的 JS 调用

以下是我的翻译文本方法

已在 swift 文件中的第一个参数中添加了下划线,因为这是对堆栈上提出的其他问题的大部分解决方案,并且下划线和实际变量名之间有空格。如果我从所有文件中删除 englishText 变量并将该文本硬编码到 swift 文件中,那么我的函数可以正常工作。当然,我必须在回调变量中添加下划线,所以我这边没有逻辑错误

0 投票
0 回答
400 浏览

java - 在本机反应中显示来自本机模块的png图像

我有一个滑块组件,我希望它有一个句柄,因为 png 图像作为道具传递。现在,我希望该 png 图像通过本机反应到本机模块(android 和 ios 两者)。该组件是在原生端为 ios(Objective C) 和 android(Java) 编写的。

  1. 如何将 png 图像作为道具传递给本机模块?
  2. 我如何在本机 Java 部分使用它们?(我正在使用 Canvas 来绘制我的滑块,如下所示)。
  3. 我如何在原生 Objective C 中使用它们?(我正在使用 CGContext 来绘制我的滑块)。

我试过的:

  1. 我在 React Native 端通过以下代码解析了 png 图像的路径。

然后将图像的路径作为 prop 传递imagePath={resolvedImage.uri}

然后在 Java 部分,我执行以下操作:

我正在获取图像的路径(路径是这样的:(http://10.0.2.2:8081/assets/app/components/slider/assets/slider.png),我已经通过安慰小路。

不确定我是否只需要传递图像的路径,或者是否有办法传递整个 png。这是我第一次使用 Java 和 Objective C。 这是我正在开发的滑块。 任何帮助将不胜感激。

0 投票
1 回答
195 浏览

objective-c - Objective C - Call Method defined from a Macro

I'm trying to call a Method from Objective-C that has been defined using a Macro which wraps a Swift function. I'm getting the compilation error No visible @interface for 'NearbyMessages' declares the selector '__rct_export__disconnect' in Xcode when I try to call my Method though.

My Swift function looks like this:

The Objective-C code looks like this:

The macro RCT_EXTERN_METHOD (from React's RCTBridgeModule.h) is defined as:

By reading this, upon compilation the Method should be called __rct_export__disconnect, right?

So why is it not possible to use [self __rct_export__disconnect] - How else can I call this method?

0 投票
0 回答
36 浏览

swift - 使用带有 React native 和 swift 的原生模块

我刚刚开始使用 React native 并使用 Swift 编写了一些代码,我的问题是,每次我在我的 swift 文件中更改一段代码时,我是否需要取消链接项目并重新构建?因为现在我在 swift 文件中做了一些更改,但它不适用于我的 react-native 前端。

0 投票
1 回答
357 浏览

java - 什么时候在 React Native 应用程序(使用 Expo)中编译原生模块?

底层 Native Modules 是在从 NPM 安装时编译的,还是在 App 运行时编译(即捆绑)?

我认为从 NPM 安装它们时不太可能编译它们,因为这需要您在安装时在计算机上安装适当的编译器(我没有)。最重要的是,我找不到任何似乎是编译结果的文件。

但是,我不确定的原因是对 Native 代码的更改似乎没有反映在最终的 React Native 应用程序中。

我正在尝试实现 NPM 包中缺少的功能,因此为了熟悉该包,我一直在修改本机代码。

但是,我可以更改任何我想要的,但这些更改似乎在最终应用程序中没有做任何事情。

我什至从给定的包中完全删除了所有本机代码(androidios文件夹),然后清除了我的缓存(在 Expo 捆绑器和 Expo 客户端上),但仍然没有发生任何事情;不知何故,应用程序似乎仍然忽略了应该是一个明显的错误(即丢失文件)。

这与我使用 Expo 的事实有关吗?是否忽略了更改,因为代码是从某处的缓存中读取的?我只是从根本上误解了什么吗?

任何帮助将非常感激。

Ps 我的最终目标是能够修改上述 NPM 包,所以如果不能直接修改 Native Module,有人可以告诉我正确的方法吗?谢谢。

0 投票
0 回答
102 浏览

ios - 从 Native iOS 向 React Native 发送自定义数据类型

我正在为 React Native 编写本机模块,并且需要将自定义数据类型的值返回给 React Native。要返回一个值,我使用Promise 方法,如下所示:

并将其暴露给 React Native,如下所示:

的类型cardTypeCardType3rd 方库定义的 当从 React Native 调用函数时,我收到一个null值,即使我可以看到 Native 端的值实际上是CardType(scheme: .visa, name: ...).

我认为发生这种情况是因为cardType它不是受支持的参数类型之一,并意识到可以使用 RCTConvert 以某种方式允许CardType通过桥发送值。我很难找到有关如何执行此操作的在线参考,尤其是在想使用 Swift 执行此操作时。有任何想法吗?

0 投票
1 回答
273 浏览

android - 在 android 上安装本机依赖项后,React Native Metro 捆绑器未连接

在我将此库作为本机模块添加到我的 react 本机项目后,我的 Metro 捆绑器将无法连接。

https://github.com/FolioReader/FolioReader-Android

反应原生 0.61.5

错误图像

0 投票
1 回答
195 浏览

ios - 在 iOS 的 react native 中创建自己的依赖项

我正在为 android 和 iOS 创建第一个 react-native 依赖项。我已经完成了 android 的编码部分,但现在我被困在了 iOS 中。在哪里为我的库编写代码以及如何测试。

0 投票
3 回答
1657 浏览

react-native - 试图注册两个同名的视图

我知道以前有人问过这种问题,但它们与第三方库有关,我的与requireNativeComponent

React Native从本机iOS组件创建了一个组件

这是我的iOS代码

CanvasView 文件

Canvas.swift文件

Canvas.m文件

这是我的JS代码

代码工作正常,但即使我对我的反应本机代码进行了一些更改并执行命令+s,fast refresh我仍然会收到错误消息Tried to register two views with the same name Canvas,但是当我运行时npx react-native run-ios,代码工作正常。hot reloading or fast refresh因此,即使我没有更改本机组件,当我包含我创建的本机组件时,总而言之不受支持。我可以理解如果我在 iOS swift 或客观 c 代码中更改某些内容,那么我需要重新运行 npx react-native run-ios,但即使在侧面没有更改iOS并且只在JS侧面进行更改后,我仍然会收到此错误。我的项目中没有两个同名的视图Canvas。我还尝试清除watchman、删除package.json和重新安装npm模块和pod

同样的问题也发生在android一边

0 投票
0 回答
345 浏览

swift - React Native CameraRoll 文件上传

我正在尝试构建一个自定义图像库,用户可以从中选择多个图像并通过 FormData 上传,但在 iOS 上的 CameraRoll 库中,它会获取 ph://SOMETEXT kinda uri,它是一个“LocalIdentifier”,它在这个问题上有所描述https: //github.com/react-native-community/react-native-cameraroll/issues/195#issuecomment-655549166我正在尝试建立一个快速的桥梁来实现该功能可以返回图像的真实uri,因为他正在解释但是当我尝试

在我的函数中,它总是返回没有实际图像的空对象

这是我的完整代码