浅谈React 属性和状态的一些总结


Posted in Javascript onNovember 21, 2016

一、属性

1、第一种使用方法:键值对

<ClaaNameA name = “Tom” />

<ClaaNameA name = {Tom} />

<ClaaNameA name = {“Tom”} />

<ClaaNameA name = {[1,2,3]} />//数组

<ClaaNameA name = {FunctionNAme} /> //定义一个函数

2、第二种方法:三个点的展开对象形式

var props = {

one :”123”,

tow :321

 }

<ClassNameB {…props} />

增加三个引号相当于这里面拿到两个属性了(one和two)

3、setProps形式:通过组件更新属性,不能在组件内部中修改属性的,因为会违背组件设计原则(尽量避免)

var instance =React.render(<ClassNameC ><ClaasNameC/>,document.body);

instance.setProps({name:”Tom" });

二、状态:事物所处的状况,由事物自行处理不断变化/事物的私有属性

getInitialState:初始化每个实例特有的状态

setState:更新组件状态

setState会触发diff算法:判断state和页面结果的区别,是否需要更新

三、状态和属性对比

状态和属性都会触发render更新,都是纯JS对象

状态:是和自己相关的,既不受父组件也不受子组件影响

属性:本身是不能自己去修改的,只能从父组件获取属性,父组件也能修改它的属性

根本的区别:组件在运行时需要去修改维护的就是状态

四、简单的demo熟悉一下:

<!DOCTYPE html>
2 <html>
3  <head>
4   <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
5   <title>daomul's example</title>
6   <link rel="stylesheet" href="../shared/css/base.css" />
7  </head>
8  <body>
9   <h1>Text demo</h1>
  <div id="container">

  </div>

  <script src="../shared/thirdparty/es5-shim.min.js"></script>
  <script src="../shared/thirdparty/es5-sham.min.js"></script>
  <script src="../shared/thirdparty/console-polyfill.js"></script>
  <script src="../../build/react.js"></script>
  <script src="../../build/JSXTransformer.js"></script>
  <script type="text/jsx">

    //内容组件
    var Content = React.createClass({
     getInitialState:function(){
      return {
       inputText:'',
      };
     },
     handleChange:function(event){
      this.setState({inputText:event.target.value});
     },
     handleClick:function(){
      console.log("props name is " + this.props.selectName + " \n and inputText is " + this.state.inputText);
     },
     render:function(){

      return <div>
       <textarea onChange = {this.handleChange} placeholder = "please input something!"></textarea>
       <button onClick = {this.handleClick}>sumbit</button>
      </div>;
     },
    });

    //评论组件
    var Comment = React.createClass({
     getInitialState:function(){
      return {
       names:["Tom","Axiba","daomul"],
       selectName:'',
      };
     },
     handleSelect:function(){
      this.setState(
        {selectName : event.target.value}
       );
     },
     render:function(){
      var options = [];
      //往options中添加子option
      for (var option in this.state.names) {
       options.push(<option value={this.state.names[option]}> {this.state.names[option]} </option>)
      };
      return <div>
       <Content selectName = {this.state.selectName}>
       </Content>
       <select onChange = {this.handleSelect}>
        {options}
       </select>
      </div>;
     },
    });

    //start render
    React.render(<Comment></Comment>,document.body);
  </script>
 </body>
</html>

以上这篇浅谈React 属性和状态的一些总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
正则表达式语法
Oct 09 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
Vue中遍历数组的新方法实例详解
Jul 21 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 #Javascript
jQuery用FormData实现文件上传的方法
Nov 21 #Javascript
遍历js中对象的属性和值的实例
Nov 21 #Javascript
JavaScript数据结构链表知识详解
Nov 21 #Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 #Javascript
Node.js测试中的Mock文件系统详解
Nov 21 #Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 #Javascript
You might like
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
如何让CI框架支持service层
2014/10/29 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
vue-router路由模式详解(小结)
2019/08/26 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
python之PyMongo使用总结
2017/05/26 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python实现快递价格查询系统
2020/03/03 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
新书吧创业计划书
2014/01/31 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
工程竣工验收申请报告
2015/05/15 职场文书