美文网首页React极简教程
react fetch 及 react 组件间数据的传输

react fetch 及 react 组件间数据的传输

作者: 走走婷婷1215 | 来源:发表于2017-03-01 11:48 被阅读2866次

fetch 是 XMLHttpRequest 的最新替代技术,它的主要方法就是 fetch() 方法。

相关资料:
fetch网址:阮一峰;http://javascript.ruanyifeng.com/bom/ajax.html#toc27
http://blog.csdn.net/u014410695/article/details/51017088

url :http://blog.csdn.net/u014410695/article/details/51017088

在项目中使用:

home.js 是首页, 而 NavList 是轮播图的组件,现在要实现的就是在 home.js 中把首页的数据拿到并拆分出来,把轮播图这一块的数据传递给 NavList 组件, NavList 拿到数据并渲染。

1、home.js 拆分数据
一般数据拆分是写在 componentDidMount() 中,该方法是在 render() 方法成功调用并且真实的 dom 已经被渲染后进行。

componentDidMount() {
   /* var myHeaders = new Header();
    myHeaders.append("Content-Type", "text/plain");
    myHeaders.append("Content-Length", context.length.toString());
    myHeaders.append("X-Custom-Header", "ProcessThisImmediately");

    var myInit = {
        method: 'POST',
        headers: myHeaders,
        mode: 'cors',
        cache: 'default'
    };  */   // 头部信息,解决兼容性问题

   var url = "................................."; // 接口url
   fetch(url).then(
        function (res) {
            if (res.ok) {
                return res.json()
            } else {
                {this.LogError(res)}
            }
        }
    ).then(function (json) {
        if (json.code == "200") {  // 判断请求是否正确
            return json.datas
        }
    }).then(function (datas) {
        for (var i=0; i<datas.length; i++) {
            if (datas[i].type == "adv_list") {  // 取出轮播图的数据
                return datas[i].ietm_data
            }
        }
    }).then( (e) => {
       console.log("props111=====" + e );
        this.setState({  // setState 将数据塞在 state 中以便在组件间进行数据传递
            slideList:e
        });

    });
}
  LogError(res) {
      console.error('服务器繁忙,请稍后重试; \r\nCode:' + res.status)
  }

2、数据传递

home.js 在 constructor 中初始化 slideList 数组,以便后续来承载需要传输给子组件的数据。

constructor(){
    super();
    this.state = {
        slideList:[],  // 初始化 slideList[]
    }
}

前面在第一步也讲到了,把数据 setState 到 slideList 中。

render() {
  return (
    <div>
        <Nav />
        <NavList  datas={this.state.slideList} />  // 在 render 数组的时候将数据传输进去
        <GridView />
    </div>
  );
}

3、子组件接收数据并渲染组件

NavList 中 继承父组件的 props:

constructor(props) {
    super(props);
    console.log("props=====" + props);  // 这里打印时已经确定数据传输过来了
    this.state = {   // 无关
        current: 1,
    };
};

渲染组件,我这里用的是 antd mobile 的轮播图:

render() {
    const settings = {
        //是否显示面板指示器
        dots: true,
        //是否自动切换
        autoplay: true,
        //是否循环播放
        infinite: true,
        //手动设置当前显示的索引
        selectedIndex: this.state.current,
        beforeChange: this.beforeSlide,
        afterChange: this.slideTo,
    };

    return (
        <div>
            <Carousel {...settings}>
                {
                    this.props.datas.map(function(el){  // map遍历 渲染
                        return <Flex
                            justify="center"
                            className={styles.flex}
                        >
                            <img className={styles.image} src={el.image} />
                        </Flex>
                    })
                }

            </Carousel>
            <WhiteSpace size="1g" />
        </div>
    );
}

ok,动态取值的轮播图就已经完成了。

相关文章

  • react fetch 及 react 组件间数据的传输

    fetch 是 XMLHttpRequest 的最新替代技术,它的主要方法就是 fetch() 方法。 相关资料:...

  • React Native 架构之 Redux介绍

    React 在 React 中,UI 以组件的形式来搭建,组件之间可以嵌套组合。另,React 中组件间通信的数据...

  • React数据流

    在 React 中,数据是自顶而下单向流动的,即从父组件到子组件。 React的数据传输主要靠state和prop...

  • React组件之间的通讯

    在 React 中,UI 以组件的形式来搭建,组件之间可以嵌套组合。另,React 中组件间通信的数据流是单向的,...

  • react子组件向父组件传值

    相关资料:react 父组件怎么获取子组件的这个值React组件间信息传递方式react同级组件之间传值 • 父...

  • (1)React的开发

    1、React项目架构搭建2、JSX语法3、React组件化开发4、React组件间通信5、React中的事件6、...

  • 2、react基础介绍

    React理念 划分组件边界的原则 React组件的数据种类 React组件的声明周期 组件的划分 高内聚 低耦合...

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • 深入浅出React和Redux学习笔记(二)

    设计高质量的React组件 构建高质量的React组件的原则和方法: 划分组件边界的原则; React组件的数据种...

  • React第五天 (偷懒了一天)

    React与后台数据交互 axios: fetch: 传统 Ajax 已死,Fetch 永生:https://se...

网友评论

    本文标题:react fetch 及 react 组件间数据的传输

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