美文网首页
RN开发记录

RN开发记录

作者: 戒惜舍得 | 来源:发表于2017-10-11 10:53 被阅读33次

constructor(props) {

每一个组件的 constructor 钩子函数, props 是可以通过react-redux 中的 connect来链接props的。子组件的constructor 钩子函数中,props这个传入参数,很可能是父组件传入的值。

======
scrollToEnd, 这个方法在6和6sP上效果不一样,自己使用 scrollTo({y: 0, animated: true}) 来替代了,这样可以在6和6sp上有一样的效果。

========
componentDidUpdate(prevProps, prevState)
这个钩子函数调用较频繁,这里面的代码需要少放

=====
当导航控制器两个子路由公用一个组件,其中一个路由又是tab的子路由时。tab 子路由渲染会经常由于使用的同一个状态会出现tab子路由的控制器现实错乱问题。因componentWillUnmount这个钩子函数不能调用 this.setState() 钩子函数,所以不能在非tab的子路由的componentWillUnmount清空状态。render() 函数中也不能更新状态,会出现死循环。由于tab下的子路由控制器一版不会多次生成,使用两个子控制器来替代同一个公用控制器是一个比较好的方式。

====

Xcode8 升级  Xcode9 使用RN出问题了。 
自己打算降回 8 看看,问题能不能解决。 
因为Xcode 9 刚出来,所以好多团队可能在Xcode 9的踩坑。

===
RN版本问题

之前问了一个在北京用RN的开发者,他公司的RN是固定在一个版本的。 之前了解的RN的开发都是固定在一个版本。

===

RN导航
如果一个控件被添加到了导航路由 navigation 里面,这个控件中就可以用this.props.navigation来获取导航。 
如果自己在一个导航路由下的控件中没有传入子控件中,那么这个子控件中就拿不到导航。

RN导航到首页的多次跳转问题

当在一个填写问卷页面完成填写后,本来跳转逻辑应该是跳转到上个列表页面,由于这样做会出现,列表单项的已填写或者未填写状态没有更新的问题,最后决定直接跳转到首页。在跳转首页的时候,又出现了使用this.props.navigation.navige('Main) 的时候,填写多次问卷,后面几次会出现多次跳转的问题。

export const atHomeResetNavigationTo = (navigation, routeName,params) => {
  let resetAction;
  resetAction =  NavigationActions.reset({
    index: 1, actions: [
      NavigationActions.navigate({ routeName: 'Main',params:params ? params :{},  action: NavigationActions.navigate({ routeName: 'Chat'})
      }),
      NavigationActions.navigate({ routeName: routeName,params:params ? params :{}})
    ]
  })

  navigation.dispatch(resetAction);
}

调用:

 Alert.alert(
          '',
          '量表提交成功。',
          [
            {text: '确认', onPress: () => {atHomeResetNavigationTo(this.props.navigation,'Main')},style: 'cancel'},
          ],
          {cancelable: false}

        )

这样写就解决了会多次提示 Alert 框,多次返回的情况。

global

RN 开发启动模拟器的时候,终端里面显示启动服务,自己估计和Nodejs 关系大。RN调试除了第一次启动慢,以后不用重新编译,和JS是脚本语言有关吧。 
Node js 里的 global 类似浏览器里的 window.
有一些需求,会在控制器跳转的时候执行。 Javascript, 是单线程的,只能使用JS的异步来完成这个需求。将一个控制器中的 setState() 函数赋给一个 global的属性中,在reduxaction 中,请求成功的时候,就可以先断这个挂在global属性的这个函数是不是存在。判断存在之后就可以执行这个函数,以达到修改当前不显示的空间的状态,以达到修改界面的目的。

iOS 上启动图片的问题

RN0.43,Xcode8。 Appdelegate.m 上使用RN初始配置代码,有时启动图片会闪一下,然后显示白色空白View
Images.xcassets 上,自己使用Launscreen后, 在luanscreen xib 上的 ImageView 上对应的图片, 直接拖进Images.xcassets上就可以了。 自己遇到问题, 6上有启动图片,6SP上没有。直接删除Images.xcassets上对应的图片,再拖入一个就解决了。 原来的图片设置的有问题。。

相关文章

网友评论

      本文标题:RN开发记录

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