浅谈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带搜索框的下拉菜单
May 06 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
点击button获取text内容并改变样式的js实现
Sep 09 Javascript
JavaScript学习笔记之DOM基础 2.4
Aug 14 Javascript
js转html实体的方法
Sep 27 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
Dec 08 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
Sep 15 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
vue控制多行文字展开收起的实现示例
Oct 11 Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 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请求远程地址设置超时时间的解决方法
2016/10/29 PHP
Js动态创建div
2008/09/25 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
vue实现的树形结构加多选框示例
2019/02/02 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python利用ansible分发处理任务
2015/08/04 Python
Python处理文本换行符实例代码
2018/02/03 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
大学生演讲稿范文
2014/01/11 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
法学专业求职信
2014/07/15 职场文书
会议开幕词
2015/01/28 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
社区活动总结范文
2015/05/07 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
Tomcat弱口令复现及利用
2022/05/06 Servers