首先看一个 基础html  至于其中的 js 问价大家去官网下载就好了。

  1. <html>
  2. <head>
  3. <script src="../build/react.js"></script>
  4. <script src="../build/react-dom.js"></script>
  5. <script src="../build/browser.min.js"></script>
  6. </head>
  7. <body>
  8. <div id="test"></div>
  9. <script type="text/babel">
  10.  
  11. </script>
  12. </body>
  13. </html>

1在input框中输入值点击按钮获取其中的值在console.log中打印。

  1. var TestRef = React.createClass({
  2. handleClick : function(){
  3. console.log(this.refs.Inputref.value);
  4. },
  5. render:function(){
  6. return (<div>
  7. <input type="text" ref="Inputref"/>
  8. <input type="button" value="TEXT" onClick={this.handleClick}/>
  9. </div>);
  10.  
  11. }
  12. });
  13.  
  14. ReactDOM.render(
  15. <TestRef/>,
  16. document.getElementById('test')
  17. );

2

//2 组建通讯 属性的用法
/**
* 当输入框的值改变的时候上面hello后面的值也发生改变
* 当Test1 组建创建 执行getInitialState(这个方法只运行一次 在创建组建的时候)方法 设置状态 name 的默认值为空
* 然后执行render 方法 渲染 此时调用Test组建 由于组建Test中name 属性的值是空 所以页面第一次会显示 hello word
* 当用户在输入框中输入数据的时候 出发 onChange 执行handleChange 方法 这个方法中
* setState 更新name 的状态为输入框的值。此时在组建Test 中的属性name 的值发生改变 所以会随之变化
*/

  1. var Test =React.createClass({
  2. render:function(){
  3. return <div>hello,{this.props.name ? this.props.name :'word!'}!</div>;
  4. }
  5. });
  6. var Test1 = React.createClass({
  7. getInitialState:function(){
  8. return {name:''};
  9. },
  10. handleChange:function(event){
  11. this.setState({name:event.target.value})
  12. },
  13. render:function(){
  14. return(
  15. <div>
  16. <Test name={this.state.name}/>
  17. <input type="text" onChange={this.handleChange}/>
  18. </div>
  19. );
  20. }
  21. });
  22.  
  23. ReactDOM.render(
  24. <Test1/>,
  25. document.getElementById('test')
  26. );

3

// 组建通讯 状态 属性的用法
/**
* 状态,属性的用法
* 场景:点击提交的时候 获取textarea的值和select 选中的值。用console.log 打印出来
* 最后render 渲染的时候是Test1组建 所以先看Test1组建 创建的时候 定义了2个状态 names数组 selectvalue
* 渲染的时候 也加载了<Test>组建 给组建设置了一个属性selectName 值等于Test1中的状态 selectvalue
* 组建Test1中当下拉框的值改变的时候触发handleOnchange方法 设置状态 selectvalue的值为下拉框中选中的值。
* 在Test 组建中 创建的时候 设置状态 inputValue为空 渲染的时候 当输入框的值改变的时候出发handleONE方法
* 设置状态inputValue 的值为输入框的值。 当点击Submit的时候出发 handleTWO 方法 获取状态inputValue的值和属性selectName的值
*

  1. var Test =React.createClass({
  2. getInitialState:function(){
  3. return {inputValue:''};
  4. },
  5. handleONE:function(event){
  6. this.setState({inputValue:event.target.value});
  7. },
  8. handleTWO:function(){
  9. console.log("textarea value is:"+this.state.inputValue+"----selectValue:"+this.props.selectName);
  10. },
  11. render:function(){
  12. return (
  13. <div>
  14. <textarea placeholder="please input string" onChange={this.handleONE}>
  15. </textarea>
  16. <input type="button" value="Submit" onClick={this.handleTWO}/>
  17. </div>
  18. );
  19. }
  20. });
  21.  
  22. var Test1 = React.createClass({
  23. getInitialState:function(){
  24. return{
  25. names:['xiaoming','xiaowang','xiaohong'],
  26. selectvalue:'',
  27. }
  28. },
  29. handleOnchange:function(event){
  30. this.setState({selectvalue:event.target.value});
  31. },
  32. render:function(){
  33. var optionArr = [];
  34. for (var option in this.state.names) {
  35. optionArr.push(<option key={option} value={this.state.names[option]}>{this.state.names[option]}</option>);
  36. };
  37. return(
  38. <div>
  39. <select onChange={this.handleOnchange}>
  40. {optionArr}
  41. </select>
  42. <Test selectName={this.state.selectvalue}/>
  43. </div>
  44. );
  45. }
  46.  
  47. });
  48. ReactDOM.render(
  49. <Test1/>,document.getElementById('test')
  50. );

4 组建的生命周期  初始化阶段

  1. // React 有三个阶段 初始化阶段 运行中阶段 销毁阶段
  2. // React 初始化阶段
  3. var HelloWorld = React.createClass({
  4. //设置默认属性
  5. getDefaultProps: function () {
  6. console.log("getDefaultProps, 1")
  7. },
  8. //设置默认状态
  9. getInitialState: function () {
  10. console.log("getInitialState, 2");
  11. return null;
  12. },
  13. //在渲染之前调用
  14. componentWillMount: function () {
  15. console.log("componentWillMount, 3")
  16. },
  17. //渲染
  18. render: function () {
  19. console.log("render, 4")
  20. return <p ref="childp">Hello, {(function (obj) {
  21. if (obj.props.name)
  22. return obj.props.name
  23. else
  24. return "World"
  25. })(this)}</p>
  26. },
  27. //组建渲染完成之后调用
  28. componentDidMount: function () {
  29. console.log("componentDidMount, 5")
  30. },
  31. });
  32. ReactDOM.render
  33. (<div>
  34. <HelloWorld></HelloWorld>
  35. </div>,
  36. document.getElementById('test')
  37. );

看结果

5 组建的生命周期 运行中阶段

  1. // React 有三个阶段 初始化阶段 运行中阶段 销毁阶段
  2. // React 运行中阶段触发顺序
  3. var HelloWorld = React.createClass({
  4. componentWillReceiveProps: function () {
  5. console.log("componentWillReceiveProps 1");
  6. },
  7. shouldComponentUpdate: function () {
  8. console.log("shouldComponentUpdate 2");
  9. return true;
  10. },
  11. componentWillUpdate: function () {
  12. console.log("componentWillUpdate 3")
  13. },
  14. render: function () {
  15. console.log("render 4");
  16. return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
  17. },
  18. componentDidUpdate: function() {
  19. console.log("componentDidUpdate 5");
  20. },
  21. });
  22. var HelloUniverse = React.createClass({
  23. getInitialState: function () {
  24. return {name: ''};
  25. },
  26. handleChange: function (event) {
  27. this.setState({name: event.target.value});
  28. },
  29. render: function () {
  30. return <div>
  31. <HelloWorld name={this.state.name}></HelloWorld>
  32. <br/>
  33. <input type="text" onChange={this.handleChange} />
  34. </div>
  35. },
  36. });
  37. ReactDOM.render
  38. (<div>
  39. <HelloUniverse></HelloUniverse>
  40. </div>,
  41. document.getElementById('test')
  42. );

默认情况下   当输入数据时

6  mixin 的用法 :复用  类似于公共方法  提高代码的复用性

  1. //Mixin 用法
  2. var MixinFunction ={
  3. handleChange:function(key){
  4. var that =this
  5. // 这里的this 代表的是HelloUniverse 这个组建。
  6. //如果return 中用this 的话 this 代表的就是 这个函数的本身 所以用that变量去代替
  7. return function(event){
  8. var Common={};
  9. Common[key] = event.target.value;
  10. that.setState(Common);
  11. }
  12. }
  13. };
  14.  
  15. var HelloUniverse = React.createClass({
  16. mixins:[MixinFunction],
  17. getInitialState:function(){
  18. return {name:'',name2:''};
  19. },
  20.  
  21. render:function(){
  22. return(
  23. <div>
  24. <input type="text" onChange={this.handleChange('name')}/><hr/>
  25. <input type="text" onChange={this.handleChange('name2')}/>
  26. <p>input_value_name:{this.state.name}</p>
  27. <p>input_value_name2:{this.state.name2}</p>
  28. </div>
  29. );
  30. }
  31. });
  32.  
  33. ReactDOM.render(
  34. <div>
  35. <HelloUniverse></HelloUniverse>
  36. </div>,
  37. document.getElementById('test')
  38. );

看结果:

初始: 结果:实现了双向绑定 

react.js 各种小测试笔记的更多相关文章

  1. React.js入门小案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  2. React.js 小书介绍

    React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...

  3. 移动web端的react.js组件化方案

     背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...

  4. Angular、React.js 和Node.js到底选谁?

    为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...

  5. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  6. React.js 小书 Lesson16 - 实战分析:评论功能(三)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...

  7. React.js入门笔记(再续):评论框的实现

    本案例来自React.js中文官网对应内容. 一. 运行环境 <link rel="stylesheet" type="text/css" href=&q ...

  8. React.js小书总结

    (迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...

  9. ReactiveX 学习笔记(26)使用 RxJS + React.js 调用 REST API

    JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一个用于测试的 REST API 网站. ...

随机推荐

  1. 关于WCF引用方式之WCF服务寄宿控制台

    1.创建解决方案WCFService 依次添加四个项目,如上图,Client和Hosting为控制台应用程序,Service和Service.Interface均为类库. 2.引用关系 Service ...

  2. Android 编译系统的组成

    Android 和 Linux 的编译系统都是通过 Makefile 工具来组织编译源代码的. Makefile 工具用来解释和执行 Makefile 文件,在 Makefile 文件里定义好工程源代 ...

  3. 使用Nancy搭建简单的Http服务的示例demo

    刚刚接触Nancy没几天,暂时还不会使用Nancy来做web开发,只是使用Nancy实现了一个简单的Http服务的Demo程序,实现对Post和Get请求的处理. Demo的示例代码地址如下:http ...

  4. Oracle拆分字符串函数与执行调用

    本函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果.代码如下: ); CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHA ...

  5. Exce信息提取

    Exce信息提取 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub 信息汇总( ...

  6. Zookeeper--Watcher 和 ACL

    Zookeeper--Watcher 和 ACL Watcher (观察) Zookeeper中的znode可以被监控,这是zk的核心特性. 通过exists,getChildren和getData这 ...

  7. librtmp接收flv流中提取h264码流:根据多个资料汇总

    rtmpdump可以下载rtmp流并保存成flv文件.如果要对流中的音频或视频单独处理,需要根据flv协议分别提取.简单修改rtmpdump代码,增加相应功能.1 提取音频:rtmpdump程序在Do ...

  8. python 发红包

    import random li = [] def fahongbao(money,num=6): if money > 0 and num != 1: n = round(random.uni ...

  9. yii 获取当前ip

    <?php //当前域名 echo Yii::app()->request->hostInfo; //除域名外的URL echo Yii::app()->request-> ...

  10. *.app 无法打开或已损坏解决办法

    1.系统偏好设置... -> 安全性与隐私-->修改为任何来源 2.如果没有任何来源  ,打开终端执行:sudo spctl --master-disable