独立请求

有时候Request Action并不能满足你的需求,你需要同时请求多个接口,并最终合并这些接口返回的数据,最后存储到reducer中。

利用service的特性,你可以轻松地处理这些需求

  1. import { Model } from '@redux-model/web';
  2. import { $api } from './ApiService';
  3.  
  4. interface Profile {
  5. id: number;
  6. name: string;
  7. }
  8.  
  9. interface Email {
  10. email: string;
  11. }
  12.  
  13. type Data = Profile & Email;
  14.  
  15. class FiveModel extends Model<Data> {
  16. async makeSense() {
  17. const profileResult = await $api.getAsync<Profile>({
  18. uri: '/api/service',
  19. });
  20.  
  21. const emailResult = await $api.getAsync<Email>({
  22. uri: '/api/email',
  23. });
  24.  
  25. // 数据汇总,变更reducer
  26. this.changeReducer((state) => {
  27. return {
  28. ...profileResult.response,
  29. ...emailResult.response,
  30. };
  31. });
  32. }
  33.  
  34. protected initReducer(): Data {
  35. return {
  36. id: 0,
  37. name: '',
  38. email: '',
  39. };
  40. }
  41. }
  42.  
  43. export const fiveModel = new FiveModel();

得到想要的数据后,通过受保护的内置方法changeReducer(),你可以快速地变更reducer。当然,你也可以选择定义Normal Action。