zoukankan      html  css  js  c++  java
  • react 的三大属性

    属性1:state

     1、认识

                   1)state是组件对象中最重要的属性,值是一个对象(可以包含多个数组,有点像vue中的data属性)

                   2)组件被称为“状态机”,通过更新组件的state来更新对应的页面显示

    2.操作state通常要经历三个状态

    3、注意点:

                  1.更新state状态定义的函数里面的this不是指向当前对象的,需要用bind强制绑定this为当前组件

                    2.强制绑定this: this.handleClick= this.handleClick.bind(this)

     属性二:props

       1.理解:

          1)每个组件对象都会有props(properties的简写)属性

          2)每个组件标签中所有的属性都保存在props中

       2.作用:

          1)通过标签属性从组件外向组件内传递变化的数据

          2)组件内部不需要修改props数据

       3.props的操作

    // 1)内部读取某个属性值
      this .props.propertyName
    // 2)对props中的属性值进行类型限制和必要性限制
    
    方法一:新版本中已经被弃用
      Person组件名:
      Person.propTypes = {
          name: React.PropTypes.string.isRequired,
          age:React.PropTypes.number.isRequired
      }
    
    方法二:
      需要用到prop - types.js文件
      Person.propTypes = {
          name:PropTypes.string.isRequired
       }
    // 3)扩展属性:对象的所有属性通过props传递
      <Person {...person} /> //默认传递了所有属性
    // 4)默认属性值 
      Person.defaultProps = {
           name: "Mary"
      }
    
    
    // 5)组件类的构造函数,
      constructor(props){
           super(props)
           console.log(props) // 里面存放所有属性
      }
    属性三:ref与事件处理
     
     1、理解

                  1)组件内的标签都可以定义ref属性来标识自己

                   2)在组件中可以通过this.msgInput来得到真实的DOM元素

                   3)作用:通过ref获取到组件特定的标签对象,进行读取相关数据

      

      2、事件处理

              1)通过onXxx属性指定组件的事件处理函数

              2)React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)

              3)通过event.target可以得到发生事件的DOM元素

    
    

     总结

    • React中props和state都是存储数据的区别如下

      1)state: 组件自身内部可变化的数据

      2)props: 从组件外部向组件内部传递数据,组件内部只读取不修改

    • 注意点:

      1)组件内置的方法中的this为组件对象,z

      2) 在组件类中自定义的处理函数方法的this默认为null 所以需要强制绑定

     
  • 相关阅读:
    flutter 网络请求以及数据处理
    flutter 布局 Expanded Stack Positioned
    异步|同步&阻塞|非阻塞
    Spring AOP 由浅入深
    Elasticsearch初探
    dubbo工作原理
    BeanFactory vs ApplicationContext
    Spring container vs SpringMVC container(webmvc container)
    Spring @Service生成bean名称的规则
    MySQL绿色版安装(mysql-5.7.12-win32)
  • 原文地址:https://www.cnblogs.com/jiangningjn/p/11469747.html
Copyright © 2011-2022 走看看