函数式组件
1、React解析组件标签
2、发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实的DOM,随后呈现在页面上
类的基本知识
1. 类中的构造器不是必须写的,要对实例进行一些初始化的操作,如添加指定属性时才写
2. 如果A类继承了B类,且A类型写了构造器,那么A类构造器中的super是必须要调用的
3. 类中所定义的方法,都是放在了类的原型对象上,供实列使用
类式组件
1、React解析组件标签
2、发现组件是使用类定义的,随后new 出来该类的实例,并通过该实例调用到原型上的render方法。
3、将render 返回的虚拟DOM转为真实DOM。随后呈现在页面上
组件中的state
- state 的值是对象(key-value的组合)
- 组件中render方法中的this为组件实例对象
- 组件自定义函数中的this 为 undefined解决办法
- 状态数据不能直接修改更新,必须要用内置APL--- setState
state 精简
1. 不再写构造器
2. 自定义方法-----要用 赋值语句的形式 + 箭头函数
props
在类组件中 直接 this.props就可以拿到 组件传进来的值对象了
ES6 中三点运算符,可以展开数组,但是不可以展开 Object
React 的组件的props传值,可以只用三点运算符 展开 Object,仅限于 组件的props的传值
props是只读,不可以修改
构造器是否接受 props,是否 传递给super,取决于:是否希望在构造器中通过this访问 props
React.createRef()
官方最推荐的写法,createRef是只能存一个值,后面的值会直接覆盖前面定义的值,键值对的形式存储
input1 = React.createRef()
事件处理
通过onXxx属性指定事件处理函数(注意大小写)
React使用的是自定义(合成)事件,而不是使用的原生的DOM事件 --- 为了更好的兼容性
React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)--为了高效
通过event.target得到发生事件的DOM元素对象--- 不要过渡使用re