6

LikeViewRCTFBLikeView.onLayout对于native 类型的 native prop 没有 propTypeboolean 如果您自己没有更改此 prop,这通常意味着您的原生代码和 JavaScript 代码的版本不同步。更新两者应该会使此错误消失。 在此处输入图像描述

不知道为什么我会收到这个错误。我根本没有在 android 应用程序中使用 LikeView。我试过跑步npm start --reset-cache

iOS版本的应用程序运行也没有问题。这仅适用于 android。

欢迎任何建议。

谢谢!

4

4 回答 4

5

我发现问题是(正如 RN 指出的那样)每个视图使用的道具上的原生道具和 JS 道具之间的不匹配。即:

  • renderToHardwareTextureAndroid
  • 布局
  • 可访问性LiveRegion
  • 可访问性组件类型
  • 重要的可访问性
  • 无障碍标签
  • 测试ID

由于我没有使用包使用的任何视图,即:

  • FBlikeView
  • FBLogin按钮
  • FBS发送按钮
  • FBShareButton

我尝试将此道具设置为“仅限本机”,以便它们不会绑定到 JavaScript 端。在每个组件中(在示例中,FBShareButton.js),我替换了:

const RCTFBShareButton = requireNativeComponent(
    'RCTFBShareButton',
    ShareButton,
);

const RCTFBShareButton = requireNativeComponent(
  'RCTFBShareButton',
  ShareButton,
  {
    nativeOnly: {
      onChange: true,
      onLayout: true,
      testID: true,
      importantForAccessibility: true,
      accessibilityLiveRegion: true,
      accessibilityComponentType: true,
      accessibilityLabel: true,
      renderToHardwareTextureAndroid: true,
    }
  },
);

我现在要检查视图是否正确呈现并稍后编辑我的帖子,但是如果您只想能够编译您的应用程序以继续开发(就像我目前的情况一样),那应该让你这样做。

编辑

我使用README中的示例和我的更改成功地呈现了LoginButton组件。

编辑 2

我对包的更改提出了拉取请求。我不喜欢这个解决方案,但它可能会引起 FB 的注意。与此同时,你可以用我的叉子。在您的package.json中,只需将 fbsdk 行替换为:

"react-native-fbsdk": "git+https://github.com/motius/react-native-fbsdk.git#fix-views"

实际上,这个其他拉取请求可能是一个更好的解决方案。

于 2017-05-26T09:28:03.727 回答
4

与@martinarroyo 建议的解决方案类似,我认为这与本机代码和js 代码之间未同步的一些组件有关。如果你不使用这些组件,而不是nativeOnly在你使用它的每个 js 文件中添加属性,我将 react-native-fbsdk index.js 中的导出注释掉如下:

//native components
// exports.LikeView = require('./FBLikeView');
// exports.LoginButton = require('./FBLoginButton');
// exports.SendButton = require('./FBSendButton');
// exports.ShareButton = require('./FBShareButton');

显然,这只是一种解决方法,但这应该可以帮助您解决该错误

于 2017-05-29T06:14:57.410 回答
1

您可以将 react-native-fbsdk 降级到 0.5.1 以避免此问题,直到将修复程序合并到新版本中。

于 2017-06-30T09:53:37.443 回答
0

因此,经过无数次的实验并将我的头撞到桌子上,我认为解决方案是依赖的版本控制。

这是我尝试过的事情的列表,我认为解决问题的事情用 * 标记,因为我不能 100% 确定是否是这一步解决了它。

  1. 删除 node_modules 文件夹并重新安装它。
  2. 按照@matt 的建议进行 react-native-git-upgrade
  3. 按照说明多次重新安装 react-native-fbsdk 并仔细检查代码。
  4. 将 buildToolsVersion 和 targetSdkVersion 更改为 25. 5**。最终运行react-native uninstall react-native-fbsdk紧随其后react-native install react-native-fbsdk@0.5.0

注意* 5 号在过去两天内一直在尝试……但直到现在它才起作用……所以我不知道是什么黑魔法导致它刚刚起作用……

数字 5 的问题是,昨天之前 fbsdk 依赖版本是 0.5.0,而截至昨天,它已升级到 0.6.0。所以我不确定为什么即使我昨天也重新安装了它,但它并没有修复错误。

如果对此更熟悉的人可以解释为什么会发生这种情况,我会倾向于学习。

于 2017-05-25T22:02:05.147 回答