不推荐使用的RCTEventDispatcher方法和RCTEventEmitter问题

时间:2019-07-05 07:54:11

标签: objective-c xcode react-native

我对React Native开发非常陌生,对Objective C和Xcode也不了解。 但是随着React Native生成.xcworkspace项目,我无法使用Xcode来构建它。 在RCTFBSDKLoginButtonManager.m文件中,有两个方法:

#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];

我现在被困住了,不知道如何处理这个问题。

1 个答案:

答案 0 :(得分:1)

我的问题在运行yarn add git + https://github.com/facebook/react-native-fbsdk.git从master分支获取时就解决了。 希望这会有所帮助!