React笔记

函数组件 和 类 区别

  this === und
  没有 setState
  没有 生命周期

setState 同步的还是异步的

异步:
1. JSX 原生事件
2. 生命周期
同步:
1. 原生 js 注册的事件
2. ajax
3. setTimeout setInterval 计时器

生命周期

16.4 前

加载阶段
  constructor
  render
  componentDidMount

更新阶段
  componentWillReceiveProps
  shouldComponentUpdate
  componentWillUpdate
  render
  componentDidUpdate

卸载阶段
  componentWillUnmount

16.4 后

hook

pages 目录: 业务组件

目录名小写

componets: 公共组件
目录名大写
jsx 结尾
index.jsx

Redux 三大基本原则:

  1. store 单一数据源
  2. state 在页面里是只读的 触发action -> 修改state
  3. state 只能在reduce里改 并且reduce 必须是纯函数

浏览器渲染html的过程

https://www.cnblogs.com/whalesea/p/10980849.html
解析html
构建dom树
dom树结合css文件,构建呈现树
布局
绘制

  1. 解析html和构建dom树是同步进行的,这个过程就是逐行解析代码,包括html标签和js动态生成的标签,最终生成dom树。
  2. 构建呈现树,就是把css文件和style标签的中的内容,结合dom树的模型,构建一个呈现树,写到内存,等待进一步生成界面。呈现树一定依赖dom树,呈现节点一定会有对应的dom节点,但是dom节点不一定会有对应的呈现节点,比如,被隐藏的一个div。
  3. 布局,这一步就是结合呈现树,把dom节点的大小、位置计算出来。虽然呈现节点已经附着在都没节点上,会有对元素大小、位置的定义,但是浏览器还需要根据实际窗口大小进行计算,比如对auto的处理。
  4. 绘制,把css中有关颜色的设置,背景、字体颜色等呈现出来。

调用 setState 发生了一些什么

在代码中调用setState函数之后, 
React 会将传入的参数对象与组件当前的状态合并,
然后触发所谓的协调(Reconciliation), 
经过协调 React 会以相对高效的方式根据新的状态构建 
React 元素树. 在 React 得到元素树之后, 
React 会自动计算出新的树与老树的节点差异, 
然后根据差异对界面进行最小化重渲染

react和vue区别

  1. react 上手比较难 vue 相对简单
  2. react 插件库更丰富
  3. react 没有双向绑定的 vue 有 v-Models
  4. react diff vue2.0 defaultProps 实现 (vue3.0 Proxy)

react 和 vue 的相似之处

  1. 使用虚拟 dom
  2. 提供了响应式和组件化的视图组件

内核

1、IE浏览器内核:Trident内核,也是俗称的IE内核;
2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;
3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;
4、Safari浏览器内核:Webkit内核;
5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;

箭头函数定义

箭头函数没有自己的 this
箭头函数的 this 是在定义时就固定不变的 this值是当前上下文的 this

箭头函数 普通函数 区别
* 箭头没有自己的 this
* 箭头没有 arguments
* 箭头函数不能当做构造器使用
* 箭头函数的 this 是在定义时就固定不变的 this 值是当前上下文的 this

Promise

 * 为啥要用 promise: 回调地狱
 * 三种状态: 进行中 已成功(resolve) 已失败(reject)
 * new Promise((resolve, reject) => { }) 返回一个 promise
   (Promise 的状态一旦改变了 就永远不会再变了)
    resolve(参数): 把 promise 的状态 由进行中 -> 已成功
    reject(参数): 把 promise 的状态 由进行中 -> 已失败
 * 监听 
    then(res => { res })
    catch(error => { error })
    p1.then() 返回一个新的 promise
    p1.catch() 返回一个新的 promise

 * Promise.all([p1, p2, ...p3]) 返回一个 promise
    必须都成功触发 then
    有一个失败 就触发 catch


 * Promise.race([p1, p2, ...p3])
    只要有一个 状态改变了 不管成功还是失败 都会触发监听

 * Promise.resolve(参数) 立刻返回一个状态是成功的 promise
 
 * Promise.reject(参数) 立刻返回一个状态是失败的 promise
*/

构造器

  1. 创建一个 空对象 { }
  2. 执行构造器 constructor
  3. 把 this 指向 { } 给空对象赋值
  4. 返回 { } 返回 实例变量

public: 修饰的属性或方法是公有的 可以在任何地方被访问到 默认 public
private: 修饰的属性或方法是私有的 只能在类的内部访问
protected: 修饰的属性或方法是受保护的 它和 private 类似 区别是它在子类中也是允许被访问的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值