Лучшая практика для получения синхронизации

Я пытаюсь получить модель User которые имеют отношение к Projects, Вот мой models/user.js

 *fetchUser({ payload, callback }, { call, put }) {
      const user = yield call(queryUser, payload);
      yield put({
        type: 'setCurrentUser',
        payload: user,
      });
      if (callback) callback();
    },

Какова лучшая практика? Где я должен вызвать функцию queryProjects? Может быть ниже этой линии?

const user = yield call(queryUser, payload);
const projects = yield call(queryProjects, user); // new api call

1 ответ

Первый подход

Сделать две модели, users & projects

Тогда вы можете сделать это

*fetchUser({ payload, callback }, { call, put }) {
      const user = yield call(queryUser, payload);
      yield put({
        type: 'setCurrentUser',
        payload: user,
      });
      yield put({type: 'projects/fetchByUserId', payload: user.id});
    },

Inside your `projects` model.

*fetchByUserId({payload){
    // do ajax call
}

Когда у вас есть данные для проектов, вы можете фильтровать массив проектов по идентификатору пользователя (учитывая, что ваш проект имеет что-то вроде project.user_id) и показать их в приложение.

Второй подход

Ваш внутренний сервер может отправить список проектов для пользователя в объекте пользователя.

{
    id: 1,
    username: "foo",
    projects: [
        {id: 1},
        {id: 2}
        {id: 3}
    ]
}

Я надеюсь, что это имеет смысл.

Другие вопросы по тегам