定义Meta

Meta本质上也是保存在reducer的数据,它记录了每个Request Action的当前状态。比如http的状态、请求错误时的信息,以及当前Action是否正在请求(loading)

  1. // 请求前 false
  2. console.log(thirdModel.getProfile.meta.loading)
  3.  
  4. thirdModel.getProfile(1)
  5. .then(() => {
  6. // 请求成功,正常拿数据
  7. })
  8. .catch(() => {
  9. // 请求失败,从service中收集信息
  10. console.log(thirdModel.getProfile.meta.errorMessage)
  11. })
  12. .finally(() => {
  13. // 请求结束 false
  14. console.log(thirdModel.getProfile.meta.loading)
  15. });
  16.  
  17. // 请求中 true
  18. console.log(thirdModel.getProfile.meta.loading)

关闭Meta

默认情况,meta是开启的。并不是每个请求action都需要记录meta,你可以手动关闭它。关闭之后,你无法再获取当前Action的meta数据

  1. getProfile = service.get(() => {
  2. return this.uri('').metaKey(false);
  3. });

使用Loading

Loading是存储的在Meta中一个属性,因为经常会被用到,所以我们定义了快捷方式去拿

  1. const loading = thirdModel.getProfile.loading;

在Hooks中使用

在React的hooks组件中,我们需要使用use前缀去获取meta

  1. const myMeta = thirdModel.getProfile.useMeta();
  2. const myCode = thirdModel.getProfile.useMeta('businessCode');
  3.  
  4. const loading = thirdModel.getProfile.useLoading();