浅谈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 相关文章推荐
javascript hashtable 修正版 下载
Dec 30 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
js怎么覆盖原有方法实现重写
Sep 04 Javascript
jQuery基础知识小结
Dec 22 Javascript
js的toLowerCase方法用法实例
Jan 27 Javascript
如何实现json数据可视化详解
Nov 24 Javascript
vue-router 学习快速入门
Mar 01 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
vue项目中锚点定位替代方式
Nov 13 Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 Javascript
JS实现网站吸顶条
Jan 08 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
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
javascript编程起步(第二课)
2007/01/10 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
婚庆司仪主持词
2014/03/15 职场文书
保密工作责任书
2014/04/16 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript