一,前言
1.在一个Dva
项目中,我们通常在两个地方向服务端发起请求
(1)在组件的componentDidMount
生命周期
(2)在Dva
model
里的subscription
即使实现相同的目的,但是两者还是存在区别。
二,区别
1.在subscription
中调取接口会阻塞组件的渲染,当页面加载调取的接口较少时两者似乎没什么区别,但如果接口调取很多的时候,使用subscription
的方式会让页面产生较长时间的白屏。而使用componentDidMount
是在组件加载完成时执行,因此页面不会有白屏的情。
2.使用subscription
调取接口获取数据赋值给dva
的state
时,当接口更新值在组件渲染之前时,这时候即使更新了state
的值,也不会进入组件的componentShouldUpdate
生命周期,因为组件在第一次接受值得时候已经是更新后的值了。而在componentDidMount
中调取接口不会存在这种情况。
三,总结
1.综上所述,我们最好在componentDidMount
生命周期里调接口