浅谈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 loading效果代码
Jun 18 Javascript
JS分页效果示例
Oct 11 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
Sep 24 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
js图片上传的封装代码
Aug 01 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
详解javascript中的Error对象
Apr 25 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 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+memcache实现的网站在线人数统计代码
2014/07/04 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
Python之列表实现栈的工作功能
2019/01/28 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
大学三年的自我评价
2013/12/25 职场文书
有趣的广告词
2014/03/18 职场文书
节能减耗标语
2014/06/21 职场文书
节能环保演讲稿
2014/08/28 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
迟到检讨书
2015/01/26 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL