1.<SubSubComp {...this.props } /> 传递属性,{...props}的方式为组件传递了这两个属性,这就是JSX中的延展属性,"..."成为延展操作符,这种方式可以很方便地为组件指定多个属性  http://blog.csdn.net/yubo_725/article/details/50531817

2.mixin那里我真的没有看懂哈。

3.

<script type="text/jsx">
var FormApp = React.createClass({
  getInitialState:function(){
    return {
      inputValue: 'input value',
      selectValue: 'A',
      radioValue:'B',
      checkValues:[],
      textareaValue:'some text here,,,'
    }
},
  handleSubmit:function(e){
  e.preventDefault();
  var formData = {
  input: this.refs.goodInput.getDOMNode().value,
  select: this.refs.goodSelect.getDOMNode().value,
  textarea: this.refs.goodTextarea.getDOMNode().value,
  radio: this.state.radioValue,
  check: this.state.checkValues,
}
  console.log('the form result is:')
  console.log(formData);
  this.refs.goodRadio.saySomething();
},
  handleRadio:function(e){
    this.setState({
      radioValue: e.target.value,
  })
},
handleCheck:function(e){
  var checkValues = this.state.checkValues.slice();
  var newVal = e.target.value;
  var index = checkValues.indexOf(newVal);
  if( index == -1 ){
    checkValues.push( newVal )
  }else{
  checkValues.splice(index,1);
}
  this.setState({
    checkValues: checkValues,
  })
},
render: function(){
  return (
  <form onSubmit={this.handleSubmit}>
  <input ref="goodInput" type="text" defaultValue={this.state.inputValue }/>
  <!-- 这里的ref还可以这样写哈 function(comp){React.findDOMNode(comp).focus()} -->
  <br/>
  选项:
  <select defaultValue={ this.state.selectValue } ref="goodSelect">
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
  <option value="D">D</option>
  <option value="E">E</option>
  </select>
  <br/>
  <p>radio button!</p>
  <RadioButtons ref="goodRadio" handleRadio={this.handleRadio} />
  <br/>   <Checkboxes handleCheck={this.handleCheck} />
  <br/>
  <textarea defaultValue={this.state.textareaValue} ref="goodTextarea"></textarea>
  <button type="submit">提交</button>
</form>
)
}
}); var RadioButtons = React.createClass({
  saySomething:function(){
    alert("yo what's up man!");
  },
render:function(){
  return (
    <span>
    A
    <input onChange={this.props.handleRadio} name="goodRadio" type="radio" value="A"/>
    B
    <input onChange={this.props.handleRadio} name="goodRadio" type="radio" defaultChecked value="B"/>
    C
    <input onChange={this.props.handleRadio} name="goodRadio" type="radio" value="C"/>
    </span>
  )
  }
});
var Checkboxes = React.createClass({
    render: function(){
      return (
      <span>
      A
      <input onChange={this.props.handleCheck} name="goodCheckbox" type="checkbox" value="A"/>
      B
      <input onChange={this.props.handleCheck} name="goodCheckbox" type="checkbox" value="B" />
      C
      f<input onChange={this.props.handleCheck} name="goodCheckbox" type="checkbox" value="C" />
    </span>)
}
}) var formApp = React.render(
    <FormApp />,
    document.getElementById('app')
) </script>

4.minxins的双向数据绑定。

<script type="text/jsx">
var EasyForm = React.createClass({
mixins: [ React.addons.LinkedStateMixin ],
getInitialState:function(){
return {
message: 'react is awesome!',
isReactAwesome: true,
}
},
render:function(){
return (
<div>
<h1>我想说: {this.state.message}</h1>
<h2>React是不是很好用? {this.state.isReactAwesome?'非常好用!':'一般般。。。'}</h2>
<input type="text" valueLink={this.linkState('message')} />
<br/>
<input type="checkbox" checkedLink={this.linkState('isReactAwesome') } />
<br/>
<SubComp messageLink={ this.linkState('message') } likeLink={this.linkState('isReactAwesome')} /> </div>
)
}
}); var SubComp = React.createClass({
render:function(){
return (
<div>
<h3>这是个子组件哦</h3>
<SubSubComp {...this.props } />
</div>
)
}
}); var SubSubComp = React.createClass({
render:function(){
return (
<div>
<p>你想说什么?</p>
<input type="text" valueLink={ this.props.messageLink } />
<p>你稀罕React么?</p>
<input type="checkbox" checkedLink = {this.props.likeLink } />
</div>
)
}
}) React.render( <EasyForm />, document.getElementById('app') ); </script>

4.生命周期的函数:

getInitialState

getDefaultProps

componentWillMount

componentDidMount

componentWillUnmount

killMySelf

shouldComponentUpdate

componentWillUpdate

componentDidUpdate

doUpdate

react点滴的更多相关文章

  1. js的点滴

    一些好的博客 http://www.cnblogs.com/coding4/p/7809063.html canvas http://www.cnblogs.com/coding4/p/5593954 ...

  2. React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发

    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发   2016/09/23 |  React Native技术文章 |  Sky丶清|  4 条评论 |  1 ...

  3. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  4. 十分钟介绍mobx与react

    原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...

  5. RxJS + Redux + React = Amazing!(译一)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...

  6. React 入门教程

    React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...

  7. 通往全栈工程师的捷径 —— react

    腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...

  8. 2017-1-5 天气雨 React 学习笔记

    官方example 中basic-click-counter <script type="text/babel"> var Counter = React.create ...

  9. RxJS + Redux + React = Amazing!(译二)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...

随机推荐

  1. host元素的属性autoDeploy和reloadable的区别

    web.xml文件的修改会触发AutoDeploy,受host节的autoDeploy配置值的影响. class类文件修改会触发Reload操作,受reloadable配置值的影响. 而autoDep ...

  2. SaaS教父:我眼中最糟糕的9条SaaS建议(转)

    文章摘要:美国SaaS行业的教父级人物Jason Lemkin近日总结了在他眼里最糟糕的9条SaaS方面的建议,希望对SaaS行业的创业者有所启发. SaaS行业的创业者平时肯定会收到外界各种各样的建 ...

  3. Python3.6.2在线安装pymysql模块

    我是一个python新手刚才使用python写邮件发送代码的时候想着需要连接数据库, 下面的安装步骤 python -m pip install pymysql PS C:\Users\hp> ...

  4. 20145319 《计算机病毒》动态分析lab3-2

    20145319 <计算机病毒>动态分析lab3-2(实践六) 实践过程 基础分析 拿到恶意代码时,首先使用PE ID打开,查看其中一些基础信息以及观察该恶意代码是否加壳,来确定下一步分析 ...

  5. Java——List:list.add(index, element)和list.set(index, element)的区别

    add(index, element) 含义:在集合索引为index的位置上增加一个元素element,集合list改变后list.size()会增加1 用法 testList.add(index, ...

  6. Linux lvm 分区知识笔记

    盘面上可以细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为512bytes那么大. 通常所说的"硬盘分区"就是指修改磁盘分区表,它定义了"第n ...

  7. Docker 配置阿里云镜像加速器

    由于国内访问直接访问docker hub网速比较慢,拉取镜像的时间就会比较长.一般我们会使用镜像加速或者直接从国内的一些平台镜像仓库上拉取. 根据网上提供的方案,有网易,daocloud,ustc等解 ...

  8. Python之Requests的安装与基本使用

    # 安装 使用 pip 安装Requests非常简单 pip install requests 或者使用 easy_install 安装 easy_install requests # 获得源码 Re ...

  9. 【第十七章】 springboot + devtools(热部署)

    技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现 ...

  10. fhqtreap初探

    介绍 fhqtreap为利用分裂和合并来满足平衡树的性质,不需要旋转操作的一种平衡树. 并且利用函数式编程可以极大的简化代码量. (题目是抄唐神的来着) 核心操作 (均为按位置分裂合并) struct ...