浅谈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 相关文章推荐
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
javascript操作字符串的原生方法
Dec 22 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
Dec 05 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
react在安卓中输入框被手机键盘遮挡问题的解决方法
Sep 03 Javascript
JavaScript手写数组的常用函数总结
Nov 22 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中strtotime函数用法详解
2014/11/15 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
Javascript 函数对象的多重身份
2009/06/28 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
快速了解Python相对导入
2018/01/12 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python中Yield的基本用法
2020/10/18 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
业务助理岗位职责
2013/11/18 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
投资入股合作协议书
2014/10/28 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
《比的意义》教学反思
2016/02/18 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL