前端知识点汇总

112 阅读2分钟
  1. React为什么用函数式组件而不建议类式组件

    • 一般来说,类组件的性能消耗较函数式组件大,包括生成实例时使用的内存及shouldComponentUpdate不正确引起的不必要的更新。

    • 类组件不能很好地压缩

    • 实际开发中,类组件的生命周期常常包含一些不相关的逻辑

      总之,由于Hooks的使用,不具备state和生命周期已经不再是函数式组件的缺陷,所以他们由于内存使用以及更新渲染上的优势,更应该被使用。所以,一般情况下函数式组件是较好的选择,非要使用类组件的时候,也应该使用PureComponent。

  2. 为什么react一般在componentDidMount发送ajax,而vue一般在created发送ajax?

    1. 之所以react推荐在componentDidMount钩子中使用而不是componentWillMount的原因:因为请求是异步的,所以无论你放在两个中的任何一个里面,几乎绝对都会在组件渲染之后,再进行数据渲染,也就是说避免不了二次渲染(第一次渲染为默认值,第二次为请求后的数据渲染),所以效果上放到哪里都一样,但是在DidMount中可以使用refs了。然后重要的是(是在Stack Overflow中的回答看到):未来的react版本可能会对componentWillMount进行调整,可能在某些情况下触发多次,所以官方是推荐在componentDidMount中进行请求。 当然放到willMount中可能会快那么几毫秒,毕竟先运行嘛。。。
    2. vue的渲染前的钩子函数比react多两个:beforeCreat与created。而vue的例子为什么在created中写的,可能是因为是个demo也没有考虑那么多。一样的道理,无论放到beforeCreat、created或者beforeMount中也同样避免不了二次渲染,差别也可能是那么几毫秒