标签: rctbridge

RCTModernEventEmitter 为 Android Fabric 组件触发两次

我正在尝试创建一个fabric组件android,特别是我想使用onClickHandler按钮组件并react-native通过 传递回调到 side RCTModernEventEmitter。它工作正常,iOS但对于 android,RCTModernEventEmitter每次我单击时都会发出两次button

这是我的规格

import type {HostComponent, ViewProps} from 'react-native';
import type {
  DirectEventHandler
} from 'react-native/Libraries/Types/CodegenTypes';
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';

type Event = Readonly<{
  text?: string;
}>;

interface NativeProps extends ViewProps {
  text: string;
  onClickHandler?: DirectEventHandler<Event>; ////Event name should start with on
}

export default codegenNativeComponent<NativeProps>(
  'MyButtonView',
) as HostComponent<NativeProps>;
Run Code Online (Sandbox Code Playgroud)

On native side I have created following files

public class MyButtonViewManager extends SimpleViewManager<MyButtonView> …
Run Code Online (Sandbox Code Playgroud)

java android react-native rctbridge

8
推荐指数
1
解决办法
566
查看次数

尝试从不同的线程同步调用函数 {promiseMethodWrapper}

这是我第一次尝试连接 React-native 和原生 iOS 应用程序。

在我的react-native iOS 项目中,我创建了一个 swift 文件(创建了桥接标头),并在该 swift 文件中创建了一个示例方法来首先测试:

import Foundation

@objc(MyModule)
class MyModule: NSObject {

  @objc
  func testFunctionWithPromiseResolve(frame: Frame,
                                 resolver resolve: @escaping RCTPromiseResolveBlock,
                                 rejecter reject: @escaping RCTPromiseRejectBlock) {
    
    var resp = [String:Any]() //Init Dictionary
    
    resp.updateValue(frame, forKey: "frame");
    resolve(resp);
    
  }

  @objc
  static func requiresMainQueueSetup() -> Bool {
    return true
  }

}
Run Code Online (Sandbox Code Playgroud)

在桥接头文件中,我仅导入:

#import "React/RCTBridgeModule.h"
#import <VisionCamera/FrameProcessorPlugin.h>. //from react-native-vision-camera
#import <VisionCamera/Frame.h> //from react-native-vision-camera
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个名为的 Objective-C 文件MyModule.m,并在其中添加了:

#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"

@interface
RCT_EXTERN_MODULE(MyModule, NSObject);
RCT_EXTERN_METHOD(testFunctionWithPromiseResolve:
                  (Frame *)frame …
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift react-native rctbridge

5
推荐指数
1
解决办法
1706
查看次数

标签 统计

rctbridge ×2

react-native ×2

android ×1

ios ×1

java ×1

objective-c ×1

swift ×1