list.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { queryFakeList, removeFakeList, addFakeList, updateFakeList } from '@/services/api';
  2. export default {
  3. namespace: 'list',
  4. state: {
  5. list: [],
  6. },
  7. effects: {
  8. *fetch({ payload }, { call, put }) {
  9. const response = yield call(queryFakeList, payload);
  10. yield put({
  11. type: 'queryList',
  12. payload: Array.isArray(response) ? response : [],
  13. });
  14. },
  15. *appendFetch({ payload }, { call, put }) {
  16. const response = yield call(queryFakeList, payload);
  17. yield put({
  18. type: 'appendList',
  19. payload: Array.isArray(response) ? response : [],
  20. });
  21. },
  22. *submit({ payload }, { call, put }) {
  23. let callback;
  24. if (payload.id) {
  25. callback = Object.keys(payload).length === 1 ? removeFakeList : updateFakeList;
  26. } else {
  27. callback = addFakeList;
  28. }
  29. const response = yield call(callback, payload); // post
  30. yield put({
  31. type: 'queryList',
  32. payload: response,
  33. });
  34. },
  35. },
  36. reducers: {
  37. queryList(state, action) {
  38. return {
  39. ...state,
  40. list: action.payload,
  41. };
  42. },
  43. appendList(state, action) {
  44. return {
  45. ...state,
  46. list: state.list.concat(action.payload),
  47. };
  48. },
  49. },
  50. };