我有一个博客,您可以在其中创建帖子,效果很好。我想做的就是在创建后重定向到新创建的帖子。
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
不能使用。
答案 0 :(得分:0)
您的ADD_POST
动作可能将由化简器来管理,该化简器将一种posts
数组更新为我猜想的状态?
如果是这样
-添加带有phantom
函数并返回render
的{{1}}组件
-将null
数组添加到其状态道具
-state.posts
更新后,您就可以重定向用户,因为由于它是组件,您可以访问历史记录
如果您使用state.posts
或类似的库,则可以导入React-router
函数并在传奇中重定向用户
让我知道