浅谈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的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
解决checkbox的attr(checked)一直为undefined问题
Jun 16 Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 Javascript
JS实现的竖向折叠菜单代码
Oct 21 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
Jun 17 Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
vue2配置scss的方法步骤
Jun 06 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
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
深入理解Promise.all
2018/08/08 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
python实现的一个p2p文件传输实例
2014/06/04 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
python调用百度REST API实现语音识别
2018/08/30 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
浅谈python3中input输入的使用
2019/08/02 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
应届毕业生自我鉴定范文
2013/12/27 职场文书
大学应届生的自我评价
2014/03/06 职场文书
教师产假请假条范文
2014/04/10 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
领导班子整改方案
2014/10/25 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis