У меня есть блог, где вы можете создать пост, который отлично работает. То, что я хочу сделать, это перенаправить на вновь созданный пост после создания.
postActions.js:
export function* watchCreatePost() {
yield takeEvery(CREATE_POST, createPostSaga);
}
function* createPostSaga(action) {
const token = yield select(selectToken);
const headerParams = {
Authorization: `JWT ${token}`
};
const apiCall = () => {
let formData = new FormData();
formData.append("title", action.payload.title);
formData.append("content", action.payload.content);
formData.append("thumbnail", action.payload.thumbnail);
formData.append("tags", action.payload.tags);
formData.append("slug", generateSlug(action.payload.title));
return axios({
method: "post",
url: "/posts/",
data: formData,
headers: headerParams
})
.then(response => response.data)
.catch(err => {
throw err;
});
};
try {
const response = yield call(apiCall);
const post = {};
post[response.id] = { ...response };
yield put({ type: ADD_POST, payload: response });
} catch (error) {
console.log(error);
}
}
Как я уже сказал, это создает сообщение хорошо, но я не уверен, как перенаправить после его завершения. Я знаю, что в redux-thunk
вы можете использовать .then()
, но это не вариант, насколько я могу судить по redux-saga
.