react或vue的数据应该在什么时候开始请求
By admin
之前在做react的时候,一开始都照着例子,在componentWillMount里进行数据加载请求。
后来在新项目中使用vue,也在beforeMount中开始数据加载请求。
面试的时候被人提问过,也是这么回答的,人家也没就这个话题说太多。
最近在项目中发现这种方法实在是有问题,当当前组件开始载入时,进行数据请求,在请求回调中设置当前组件的数据(react与vue的生命周期比较类似,可以当作同一种来说明)。但如果数据返回较慢,此时用户切换到其他路由,组件已经卸载,一则组件的this在请求数据的回调中存在是内存泄漏,二则组件已经卸载,再更新自身的数据肯定有问题。
我想出来的解决方法有两种
一,是在组件生命周期外部请求数据,在数据确实拿到后再挂载组件。
二,终极解决方法,其实已经用了有一阵子了,但一直没有发现这个好处,即react + redux,vue + vuex。将数据放到外部,其实也相当于将数据请求放到组件的生命周期外部。
有些小项目本以为数据没多复杂,可以不用redux/vuex这种外部数据管理,但如果自己管理数据的话往往又麻烦又容易出各种问题。这样看来,全家桶还是必要的。