Лучшая практика для получения синхронизации
Я пытаюсь получить модель 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}
]
}
Я надеюсь, что это имеет смысл.