Есть несколько способов сделать это, но мне лично нравится использовать библиотеку axios.Axios, по сути, просто помогает сделать запрос API и разобрать данные обратно из API в json.
В вашем файле actions.js.
export const authenticateUser = () => {
return (dispatch, getState) => {
//get the token from the reducer
const jwtToken = getState().jwtTokenReducer.tokenKey
axios.post("/api/authenticate-user", jwtToken) //jwtToken passed into request
.then((res) =>){
dispatch({
type: "AUTHENTICATE_USER",
payload: res.data
})
}
.catch((errors) => {
dispatch({
type: "ERRORS",
payload: errors.response.data
})
})
}
}
Так что взгляните на приведенный выше синтаксис,Обычно, когда вы определяете создателя действия, вы устанавливаете функцию, которая возвращает действие (объект).Но благодаря redux-thunk теперь вы можете настроить создателей действий так, чтобы они возвращали функции с аргументом dispatch.
Таким образом, в вашей возвращаемой функции вы можете определить определенную логику, например, сделать запрос к API, как мы делали там.Затем мы можем взять эти данные с помощью обработчика обещаний .then
и использовать его в качестве полезной нагрузки для действия, которое мы явно отправили бы нашим редукторам.