创建帖子传奇后重定向到创建的帖子

时间:2018-11-15 18:03:43

标签: reactjs redux react-router redux-saga

我有一个博客,您可以在其中创建帖子,效果很好。我想做的就是在创建后重定向到新创建的帖子。

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不能使用。

1 个答案:

答案 0 :(得分:0)

您的ADD_POST动作可能将由化简器来管理,该化简器将一种posts数组更新为我猜想的状态?

如果是这样 -添加带有phantom函数并返回render的{​​{1}}组件 -将null数组添加到其状态道具 -state.posts更新后,您就可以重定向用户,因为由于它是组件,您可以访问历史记录

如果您使用state.posts或类似的库,则可以导入React-router函数并在传奇中重定向用户

让我知道