RN笔记-逆向传值

作者: 金丝楠 | 来源:发表于2017-02-23 10:30 被阅读470次

react-native中逆向传值的问题一般比较绕,这里用最简单的例子做分析:两层组件嵌套,实现点击最内层组件Push跳转次级级页面,并将url参数传递到次级页面。

场景构造与分析

Home首页中的ShopCenter组件,嵌套ShopCenterItem组件。
点击ShopCenterItem组件时要实现push次级页面,对于做过iOS开发的人都知道,不能直接在组件元素中执行push操作,可以通过代理方法Block等监控到触发跳转的操作,并在Home首页执行push跳转。

同样的,在RN也需要通过函数回调的方式,先退回至Home首页,在Home页面中执行this.props.navigator.push。而url参数应该自下而上传递给Home

ShopCenter组件

var ShopCenter = React.createClass({
  getDefaultProps(){
    //回调函数
    return{
      popToHomeView:null
    }
  }
    <ShopCenterItem
    shopImage={data.img}
    shopSale={data.showtext.text}
    shopName={data.name}
    key={i}
    detailurl={data.detailurl}
    popToShopCenter={(url)=>this.popToHome(url)} // 参数往上传,用来接收
  />
  //参数继续往上传
  popToHome(url){
    //判断 参数为空则return
    if(this.props.popToHomeView == null) return;
    //执行回调函数
    this.props.popToHomeView(url);
  }
});

ShopCenterItem组件

// 每一个商场
var ShopCenterItem = React.createClass({
  getDefaultProps(){
    return{
      shopImage:'',
      shopSale:'',
      shopName:'',
      detailurl:'',
      popToShopCenter:null
    }
  }
  <TouchableOpacity onPress={()=>{this.clickItem(this.props.detailurl)}}>
  </TouchableOpacity>
  // 参数往上传
  clickItem(url){
    //判断 参数为空则return
    if(this.props.detailurl == null) return;
    //执行回调函数
    this.props.popToShopCenter(url);
  }
});

Home页执行push跳转

          { /*购物中心*/ }
          <ShopCenter
            popToHomeView={(url)=>this.pushToShopCenterDetail(url)} //最终在这里拿到传递上来的参数
          />
  //跳转到购物中心的详情页
  pushToShopCenterDetail(url){
    //测试一下传递上来的参数有没有获取到
    alert(url);
    this.props.navigator.push(
      {
        component:ShopCenterDetailView,//要跳转的版块
        passProps:{'url':url}
      }
    );
  },

文章中截取的是代码片段,理清RN逆向传值的逻辑,灵活运用即可。

相关文章

  • RN笔记-逆向传值

    react-native中逆向传值的问题一般比较绕,这里用最简单的例子做分析:两层组件嵌套,实现点击最内层组件Pu...

  • vue逆向传值

    vue返回上个页面逆向传值传多个值

  • iOS页面间传值详解(二)

    在iOS页面间传值详解(一)中,介绍了iOS界面间的正向传值以及逆向传值的两种方法,其实逆向传值还可以使用bloc...

  • iOS 如何优雅地跨层通信

    1. 传值 (数据传递) 传值在程序开发中使我们每天需要面临的问题传值方式: 正向传值,逆向传值,跨层传值...一...

  • iOS页面间逆传值

    页面间传值有两种: 正向传值(利用属性传值就可以了,很简单) 逆向传值(有3种常用的方法) 代理传值 block传...

  • iOS集成ReactNative跳转、传值

    iOS跳转RN界面iOS跳转RN界面传值iOS跳转不同的RN界面(一)iOS跳转不同的RN界面(二)RN界面跳转到...

  • RN 总结-传值

    传值 一、当前界面: 1、初始化 state = { waiting: true, orderSort: '1...

  • RN --- 组件传值

    正向传值 A->B 反向传值 A -> B -> A 同级数据交换 标题栏与其所属的页面之间的交互1.通过生命周期...

  • iOS react native和原生交互摘录

    Native 交互到 RN :iOS原生模块向ReactNative发送事件消息使用通知进行传值 RN 交互到 N...

  • ObJective-C之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

网友评论

本文标题:RN笔记-逆向传值

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