list.js 945 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { queryFakeList } from '../services/api';
  2. export default {
  3. namespace: 'list',
  4. state: {
  5. list: [],
  6. loading: false,
  7. cursor: 0,
  8. },
  9. effects: {
  10. *fetch({ payload }, { call, put }) {
  11. yield put({
  12. type: 'changeLoading',
  13. payload: true,
  14. });
  15. const response = yield call(queryFakeList, payload);
  16. yield put({
  17. type: 'appendList',
  18. payload: Array.isArray(response) ? response : [],
  19. });
  20. yield put({
  21. type: 'changeLoading',
  22. payload: false,
  23. });
  24. },
  25. },
  26. reducers: {
  27. appendList(state, action) {
  28. return {
  29. ...state,
  30. list: state.list.concat(action.payload),
  31. };
  32. },
  33. changeLoading(state, action) {
  34. return {
  35. ...state,
  36. loading: action.payload,
  37. };
  38. },
  39. updateCursor(state, action) {
  40. return {
  41. ...state,
  42. loading: action.payload,
  43. };
  44. },
  45. },
  46. };