首页 > 解决方案 > 弃用的 RCTEventDispatcher 方法和 RCTEventEmitter 问题

问题描述

我对 React Native 开发非常陌生,我对 Objective C 和 Xcode 一无所知。但是由于 React Native 生成​​ .xcworkspace 项目,我无法使用 Xcode 构建它。在RCTFBSDKLoginButtonManager.m文件中有两个 mwthods:

#pragma mark - FBSDKLoginButtonDelegate

- (void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error
{
  NSDictionary *event = @{
    @"type": @"loginFinished",
    @"target": loginButton.reactTag,
    @"error": error ? RCTJSErrorFromNSError(error) : [NSNull null],
    @"result": error ? [NSNull null] : @{
      @"isCancelled": @(result.isCancelled),
      @"grantedPermissions": result.isCancelled ? [NSNull null] : result.grantedPermissions.allObjects,
      @"declinedPermissions": result.isCancelled ? [NSNull null] : result.declinedPermissions.allObjects,
    },
  };
  [self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event];
}

- (void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton
{
  NSDictionary *event = @{
    @"target": loginButton.reactTag,
    @"type": @"logoutFinished",
  };
  [self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event];
}

@end

每当我尝试构建项目时,我都会收到错误消息

'RCTEventDispatcher' 没有可见的@interface 声明选择器'sendInputEventWithName:body:'

在哪里sendInputEventWithName被调用,即[self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event];

我被困在这一点上,不知道如何处理这个问题。

标签: objective-cxcodereact-native

解决方案


当运行 yarn add git+ https://github.com/facebook/react-native-fbsdk.git从主分支获取时,我的问题得到了解决。希望这可以帮助!


推荐阅读