react官方文档建议我们在componentDidMount
阶段请求后台数据
this is a good place to instantiate the network request. Setting state in this method will trigger a re-rendering.
vue官方例子却在created
阶段请求数据 https://cn.vuejs.org/v2/examp...
为什么不在mounted
阶段?
到底在哪个阶段请求数据初始化界面最佳?
关于react为什么推荐在DidMount中发送请求可以看下这个:
https://stackoverflow.com/que...
个人愚见:
之所以react推荐在
componentDidMount
钩子中使用而不是componentWillMount
的原因:因为请求是异步
的,所以无论你放在两个中的任何一个里面,几乎绝对都会在组件渲染之后,再进行数据渲染,也就是说避免不了二次渲染(第一次渲染为默认值,第二次为请求后的数据渲染),所以效果上放到哪里都一样,但是在DidMount中可以使用refs
了。然后重要的是(是在Stack Overflow中的回答看到):未来的react版本可能会对componentWillMount
进行调整,可能在某些情况下触发多次,所以官方是推荐在componentDidMount中进行请求。 当然放到willMount中可能会快那么几毫秒,毕竟先运行嘛。。。vue的渲染前的钩子函数比react多两个:beforeCreat与created。而vue的例子为什么在created中写的,可能是因为是个demo也没有考虑那么多。一样的道理,无论放到beforeCreat、created或者beforeMount中也同样避免不了二次渲染,差别也可能是那么几毫秒