1.Ajax: componentDidMount 方法设置 Ajax 请求,等到请求成功,再用 this.setState 方法重新渲染 UI。
/*demo1*/
var Demo1Box=React.createClass({
    getInitialState:function(){
        return{
            username:'',
            lastGistUrl:''
        };
    },
    componentDidMount:function(){
        $.get(this.props.url,function(result){
            var lastGist = result[0];
            if (this.isMounted()) {
                this.setState({
                  username: lastGist.owner.login,
                  lastGistUrl: lastGist.html_url
                });
            }
        }.bind(this));
    },
    render:function(){
        return (
            <div>
                {this.state.username}
                <a href={this.state.lastGistUrl}>here</a>
            </div>
        )
    }
});
ReactDOM.render(
    <Demo1Box url="https://api.github.com/users/octocat/gists" />,
    document.getElementById('demo1')
);
2.利用promise实现ajax(!因为promise是异步的,所以render时要检测)
html:<div id='demo2'></div>
JS:
/*demo2*/
var Demo2Box=React.createClass({
    getInitialState:function(){
        return {data: null};
    },
    componentDidMount:function(){
        this.props.promise.then(
            value => this.setState({ data: value})
          );
 
    },
    render:function(){
        console.log(1);
        console.log(this.state.data);
        console.log(2);
        if(this.state.data){
            console.log(1);
            console.log(this.state.data);
            console.log(2);
            console.log(this.state.data.items);
            var items=this.state.data.items;
            var datalist=items.map(function(items){
                return (
                    <li>
                        {items.html_url},
                        {items.name}
                    </li>
                )
            });
            return (
                <ul>
                    {datalist}
                </ul>
            );
        }
        return (
            <ul>
            </ul>
        );
    }
});
ReactDOM.render(
    <Demo2Box promise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')} />,
    document.getElementById('demo2')
);
3.组件间回调函数
html:<div id='demo3'></div>
JS:
var Demo31Box=React.createClass({
    render:function(){
        return(
            <button onClick={this.props.clickCallback}>点我获取全名</button>
        )
    }
});
 
var Demo32Box=React.createClass({
    getFullName:function(){
        alert("全名是lili");
    },
    render:function(){
        return (
            //调用外部组件并传递回调方法
            <Demo31Box clickCallback={this.getFullName} />
        )
    }
});
ReactDOM.render(
    <Demo32Box />,
    document.getElementById('demo3')
);
4.Mixins,将Mixins对象上的方法混合到另一个调用的组件,作用和$.extend方法的作用相似。Mixins对象有几个特点:
1. )在mixin中写的生命周期相关的回调都会被合并,也就是他们都会执行,而不会互相覆盖掉。会先执行 mixin ,最后执行组件的 。
2.)mixin没有render方法。

ReactJS学习笔记(二)的更多相关文章

  1. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  4. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  5. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  6. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  7. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  8. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

随机推荐

  1. js 浏览器兼容的一些方法

    使用js是一件令人很抓狂的事情,很多的浏览器兼容,一大推的代码,谁的脑袋能记住那么多的东西,只有平时多积累,所谓熟能生巧嘛..这里列出一些常用的兼容代码,一点点积累哈~~~     一.以跨浏览器的方 ...

  2. [课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐

    [课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐 一.开发背景 多鱼点餐系统是一套比较系统化的针对餐厅点餐服务的产品,从顾客进入餐厅点餐到用餐结束再到最后的结账买单,需要全面的.高效的 ...

  3. Hibernate3 和Hibernate4 在配置文件上的区别

    在使用hibernate之前要首先对hibernate进行一些基础的配置信息,像映射文件XXX.hbm.xml  XXX代表当前的domain的模型类名 <?xml version=" ...

  4. 跨域请求解决方法(JSONP, CORS)

    1.跨域 假设我们页面或者应用部署在 http://www.aaa.com 上了,而我们打算从 http://www.bbb.com 请求提取数据.一般情况下,如果我们直接使用 AJAX 来请求将会失 ...

  5. 在CentOS上安装并运行SparkR

    环境配置—— 操作系统:CentOS 6.5 JDK版本:1.7.0_67 Hadoop集群版本:CDH 5.3.0 安装过程—— 1.安装R yum install -y R 2.安装curl-de ...

  6. Gridview 分多页时导出excel的解决方案

    在开发会遇到将gridview中的数据导入到excel 这样的需求,当girdview有多页数据时按照一般的方式导出的数据只可能是当前页的数据,后几页的数据还在数据库内,没有呈现到页面上,传统的方式是 ...

  7. Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  8. [系统开发] Python 实现的 Bind 智能 DNS Web 管理系统

    在公司的运营中,DNS还是很重要的,不仅名称解析需要DNS,一些重要的服务,比如负载均衡.HTTP 虚拟主机也会用到它.Bind 手工管理方式有一定的危险性,一旦写错格式就会造成 DNS 服务瘫痪. ...

  9. ruby 中%Q %q %W %w %x %r %s的用法

    %Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Fr ...

  10. asp.net解决高并发的方案.[转]

    最近几天一直在读代震军的博客,他是Discuz!NT的设计者,读了他的一系列关于Discuz!NT的架构设计文章,大呼过瘾,特别是Discuz!NT在解决高访问高并发时所设计的一系列方案,本人尤其感兴 ...