Как превратить это в функцию - PullRequest
1 голос
/ 21 июня 2019

У меня есть этот лишний крюк. По сути, я буду создавать fetchStudents для учащегося, района, школы и т. Д. Вместо того, чтобы переписывать этот код, я, по сути, хочу передать URL-адрес и тип. Как я могу это сделать?

import fetch from 'isomorphic-fetch';
import { createAction } from 'utils/actionUtils';
import * as types from './StudentConstants';

export const setLoading = createAction(types.SET_LOADING);

const getStudents = students => ({
  type: types.SET_STUDENTS,
  payload: students,
});

export const fetchStudents = (students) => {
  return (dispatch) => {
    return fetch('http://gsndev.com/gsndb/student/', {
      method: 'GET',
      headers: {
        Accept: 'application/json',
        Authorization: `JWT ${localStorage.token}`,
      },
    })
      .then(response => response.json())
      .then((s) => {
        dispatch(getStudents(s));
      })
      .catch(error => (error));
  };
};

1 Ответ

1 голос
/ 22 июня 2019

fetchStudents - нормальная функция. Поэтому передайте любые аргументы, которые вы хотите, и используйте эти аргументы для логики ветвления.

Например

export const fetchStudents = (type, url) => {
    return (dispatch) => {
        return fetch(url, {   // Here you may put url
            method: 'GET',
            headers: {
                Accept: 'application/json',
                Authorization: `JWT ${localStorage.token}`,
            },
        })
        .then(response => response.json())
        .then((s) => {
            switch (type) {
                case 'students':
                    dispatch(getStudents(s));
                    break;
                case 'district':
                    dispatch(getDistricts(s));  // There can be action creator for districts
                    break;
                // And so on for other types
            }
        })
        .catch(error => (error));
    };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...