专栏首页贺贺的前端工程师之路React-Native 遇到的错误1. React-Native 部分组件在debug模式下打包在iOS真机上可以显示,但是release模式下打包在iOS真机上不显示2. React-Native

React-Native 遇到的错误1. React-Native 部分组件在debug模式下打包在iOS真机上可以显示,但是release模式下打包在iOS真机上不显示2. React-Native

1. React-Native 部分组件在debug模式下打包在iOS真机上可以显示,但是release模式下打包在iOS真机上不显示

显示

不显示

这个问题真的是卡了我好久,只要是打release包,下面的按钮组就是不显示,而release包又不能调试,于是我终于在忍无可忍的情况下,一直不能打包然后一点一点的展示在页面上,来看到底是哪里的问题。终于让我定位到了问题的所在。

问题出在这:

let buttons = [];
children.forEach((child, i) => {
      if (child.type.name === 'FlowSendButton') {
        const buttonConfig = FlowSendButton({
          setShowWriteNotion: this.setShowWriteNotion,
          requireNotion: child.props.requireNotion,
          ...child.props,
        });
        if (this.getShow(child.props)) {
          buttons.push(buttonConfig);
        }
      } else if (child.type.name === 'FlowNotionButton') {...}
...
});

这段代码在release包的情况是,buttons是空的,是由于if (child.type.name === 'FlowSendButton')这是判断根本不会为true,因为在release模式下,child.type根本没有name这个属性,只有在debug模式下才有,所以这样来进行判断的 ,统统不会有true的情况,自然buttons中没有值,也就不会展示了。

下面是我找到的一些文档中的交流:

判断方式

release

debug

if (child.type.displayName === 'FlowCancelDoButton') {}

失效

有效

if (child.type.name === 'FlowCancelDoButton') {}

失效

有效

if (child.type.prototype instanceof FlowCancelDoButton) {}

失效

有效

if (child.type === FlowApproveButton) {}

有效

有效

判断方式一览表

判断方式

release

debug

if (child.type.displayName === 'FlowCancelDoButton') {}

失效

有效

if (child.type.name === 'FlowCancelDoButton') {}

失效

有效

if (child.type.prototype instanceof FlowCancelDoButton) {}

失效

有效

if (child.type === FlowApproveButton) {}

有效

有效

总结

2. React-Native 启动时报错 - “no bundle url present”

原因

我运行了react-native run-android看了一下安卓环境下的图标的样式,然后使用react-native run-ios就报错了no bundle url present这个错误,我什么都没有干啊。

error

图片上的错误就不停,度娘了一下,原来是,因为我开了两个环境吧,可是我把环境都关了,还是不行。

解决

于是我就在iOS模拟器正在运行期间执行了:

npm install
react-native run-ios

zz,一遍还不行,试了两遍才正常了!!!


若干天后,又遇到了这个问题,按照上面的方式试了好多次都不行,只能关机重启,就好了。~~~(>_<)~~~ zz

RawText "/*" must be wrapped in an explicit <Text> component错误

是因为<Text>{test}</Text>中的test被这是为了空字符串'',就会报这个错,要保证test不会被设置为''.

ReactNative js调试时变得很卡

解决办法

把那个chrome的Tab页保持最前,窗口不要最小化就好了。也就是下面这个页面不要关,保持在最前面就好了。

js slow.png

一直报[...effects] has been deprecated in favor of all([...effects]), please update your code这个警告。

解决办法

只需要这样更新代码即可

fix.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 创建gitbook项目

    在你想要创建gitbook项目的路径,比如:react-native-list/docs路径下,创建一个SUMMARY.md文件,在其中写上你的目录结构,比如:

    贺贺V5
  • Angular2 之 Promise vs Observable

    贺贺V5
  • 各类工具网站搜索素材微信公众号排版在线设计工具

    自从看到同学的微信公众号以后,我就疯狂的迷恋上了微信公众号的排版,我觉得这不仅仅是展示自我的一个途径,更多的是,我可以任意排版,我喜欢排版,就像我喜欢养植物一样...

    贺贺V5
  • android事件分发机制的实现原理

    android中的事件处理,以及解决滑动冲突问题都离不开事件分发机制,android中的事件流,即MotionEvent都会经历一个从分发,拦截到处理的一个过程...

    砸漏
  • 你爸妈的朋友圈有救了!微信做的这款小程序,让谣言无处可逃 | 亲儿子 #5

    随着微信团队的不断努力,小程序也变得日益完善。小程序以其方便的使用条件、更低的开发门槛吸引了很多人。

    知晓君
  • Mac OS Sierra如何打开任何来源

      我们知道在Mac升级到最新的Mac OS Sierra系统之后,随之而来的是第三方应用都无法打开,提示的是无法打开或扔进废纸篓。而在之前的版本系统中,我们知...

    mukekeheart
  • ThreadLocal从源码到应用

    最早接触到ThreadLocal是在阅读dianping的Cat-client,当时对它不是很理解,就搜索了一下,大概了解是一种解决线程安全问题的机制。现在再...

    用户1154259
  • Spring Boot 实现配置文件加解密原理

    接上文《失踪人口回归,mybatis-plus 3.3.2 发布》[1] ,提供了一个非常实用的功能 「数据安全保护」 功能,不仅支持数据源的配置加密,对于 s...

    冷冷
  • 最简单的AJAX初级教程

        项目实现目标:验证邮箱是否已经注册 项目实现过程:用户注册页面输入完邮箱后即时提醒邮箱是否可以注册 先来看html表单代码

    世纪访客
  • 仿Google+相册的动画

    鼠标移入、移出时均有动画效果,咋一看估计是使用了css3的transform属性来实现动画效果的。

    meteoric

扫码关注云+社区

领取腾讯云代金券