Я пытаюсь вызвать и выполнить действие из действия, чтобы получить запись базы данных по имени, затем я хочу использовать идентификатор записи роли в действии SignUp, которое вызывается в данный момент.
Как я могу повторно использовать код для моего действия GetRolebyName из действия регистрации, я пытался избежать выполнения одного и того же запроса APi в двух местах.
По сути, я просто пытаюсь посмотреть RoleId при создании пользователя.
Действия роли:
export const fetchRoleByName = name => async dispatch => {
const response = await db.get(`/roles?name=${name}`);
dispatch({
type: FETCH_ROLE,
payload: response.data[0]
});
};
Действие регистрации:
export const signUp = values => async (dispatch, getState) => {
const role = await dispatch(fetchRoleByName(values.userType))
const response = await db.post('/users/',
{
...values,
roleId: role.id
}
);
dispatch({
type: SIGN_UP,
payload: response.data
});
history.push('/');
};
Решение:
Как указал Kaca992, действие fetchRoleByName фактически никогда ничего не возвращало, поэтому требуемое изменение было таким, как указано ниже;
export const fetchRoleByName = name => async dispatch => {
const response = await db.get(`/roles?name=${name}`);
const data = response && response.data && response.data[0];
dispatch({
type: FETCH_ROLE,
payload: data
});
return data;
};