美文网首页
React Native js调用Native的小坑

React Native js调用Native的小坑

作者: 梦魇_4dcd | 来源:发表于2017-09-13 12:43 被阅读0次

    刚学习RN不久,今天试着在已有的项目中使用。在js当中调用native类PersonCenter提供的方法logout。

    js当中调用native方法

    这个方法里的动作是navigationController的pop,而且已经放到了主线程当中执行。如下图所示。

    native当中的方法

    但是在js当中点击之后,native的方法被调用到了,却没有返回上一页。

    在项目中打了断点调试,发现了问题所在。在进入当前controller时,viewDidLoad当中打断点,self的内存地址0x00007fd18c531bb0

    在进入这个controller的viewDidLoad中打断点查看self地址

    当点击js当中的返回时,调用native,此时的self地址发生了变化,说明和之前不一样,而且self的变量都变成了nil。由此可知,js调用Native时,应该是重新创建了一个当前实例用于方法调用。新生成的实例并不包含之前self当中的所有变量(其中当然也包括self.navigationController),因此在调用的时候self.navigationController实际为空,也就达不到返回上一层的效果。

    js调用时新生成了一个实例

    暂时的解决方法是把navigationController定义成一个全局,这样在调用的时候不会出现为空的情况。还请大家斧正。

    相关文章

      网友评论

          本文标题:React Native js调用Native的小坑

          本文链接:https://www.haomeiwen.com/subject/ateksxtx.html