React知识点整理

234 阅读4分钟

React有哪些优点?

优点:

  1. 组件化开发
  2. 引入虚拟DOM ,性能好,响应速度快
  3. JSX语法
  4. 单项数据绑定
  5. 跨浏览器兼容
  6. 完善度生态圈和活跃的社区

缺点:

  • 不是完整的MVC框架
  • 不适用于复杂的大型应用

Diff算法的原理

  1. diff算法的原理是不会再次全部更新
  2. 他会创建一个新的元素树与之进行对比,如果相同他们会不予处理,他只更新发生变化的地方
  3. 好处就是减少了消耗,减少资源占用
  4. 好比两棵树,react会比对这两棵树的不同之处,算出如何高效的更新UI

在构造函数中调用super(props)的目的是什么

在super()没有被调用的时候,子类是不能使用this的,子类必须在constructor中调用super().传递props给super是便于在构造器中使用this.props

shouldComponentUpdate()有什么用?

  1. 他有两种状态,判断页面是否进行更新使用
  2. 他会接受一个Boolean值,可以进行拦截处理,用值进行判断
  3. 如果是true他会继续往下执行
  4. 如果是false他讲不在执行下面的生命周期

为什么虚拟DOM 可以提高性能?

  • React将DOM抽象为虚拟DOM,虚拟DOM就是用一个对象来描述DOM通过对比前后两对象的的差异,最后只把发生变化的元素进行重新渲染,提高渲染效率,
  • 原生DOM 重新遍历渲染,大部分与之无关,更新页面代价大

vue和react中ref的作用,用法和区别

  • 在vue和react中都可以给子组件添加ref属性来获取/设置子组件的状态
  • 在react中ref有两种用法
    • 使用字符串ref ="自定义名称"
    • 回调函数 ref={(el)=>this.自定义事件名(el)}
  • 字符串用法可以通过this.refs.自定义名称来设置和获取和设置元素状态
  • 会掉函数是在函数内部进行操作

使用箭头函数的优点是什么

  1. 作用域安全
  2. 使用箭头函数可以保留this指向
  3. 箭头函数没有this指向,它指向上一层作用域
  4. 他没有arguments,prototype等关键字
  5. 箭头函数简化代码,便于操作
  6. 不需要重新指定this指向
  7. this指向是可变的,但在箭头函数中,它指向上级作用域,而不是函数

当你调用setState的时候,发生了什么?

  1. 当页面需要进行实时更新的时候才使用setstate
  2. 当调用setState时,他会将传递setState对象传递给组件的当前状态,这个启动称为"和解",根据这个新的状态更新渲染页面,他会进行两条数据比较,不同的替换,相同的不操作,完成了实时更新

key的作用

key是跟着那些项目进行更改,添加或删除

  • 每个key都是独一无二的,他可以使和解更加高效的执行
  • 当发生遍历操作时来区别唯一元素的存在

在哪个声明周期发起ajax请求?

在componentDidMount()函数中发起ajax请求, 因为只有当页面挂载完成了,你才知道你要挂载的组件,如果未挂载完成就相当于在一个未挂载的组件上设置setState,挂载完成可以至少保证有一个组件

  • 只有挂载完成得到的数据才知道要渲染到哪里

stath和props的区别是什么

  1. state和props都在对应class的方法
  2. state是定义初始值时进行使用,但大多数都是用户进行行为的结果
  3. props是进行接收值的时候进行使用的,它不仅仅是数据,回调函数也可以一起传递

JSX是什么?浏览器怎么解析JSX

jsx是Facebook为react出的语法糖 1.他可以让界面中的HTML代码和js代码完美的融合 2. 解析js代码时用{}进行解析 3. html代码用()进行解析 4. 他减少了代码了 5. 让页面完美融合,增加可读性

  • 解析?
<script type="text/bable">

声明周期钩子有哪些?

  1. constructor 构造器
  2. componentWillMount 挂载之前
  3. render 渲染页面
  4. componentDidMount 挂载完成

  1. componentWillRecevieProps父组件传值发生变化时触发
  2. shouldComponentUpdate是否进行更新
  3. conponentWillUpdate 更新之前
  4. componentDidUpdate 更新完成
  5. componentWillUnMount 销毁之前