浅谈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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
IE无法设置短域名下Cookie
Sep 23 Javascript
js判断选择的时间是否大于今天的代码
Aug 20 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
Sep 23 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
jQuery中事件与动画的总结分享
May 24 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
Jun 13 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
vue 动态生成拓扑图的示例
Jan 03 Vue.js
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操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
ArrayList类(增强版)
2007/04/04 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
js获取页面description的方法
2015/05/21 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python绘制圆柱体的方法
2018/07/02 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
新学期教师寄语
2014/04/02 职场文书
体育馆的标语
2014/06/24 职场文书
党员十八大心得体会
2014/09/12 职场文书