【发布时间】:2018-04-30 01:50:43
【问题描述】:
我的问题和这个问题差不多:React-Router: how to wait for an async action before route transition
现状:
例如,当我在我的主页上时,我会点击一个帖子(例如 /news/news-article)。我立即导航到该路线,并显示一个加载程序,直到我的 Redux 操作已获取帖子内容,然后我加载内容。 (这也是“jmancherje”在另一个问题中回答的内容)
但这意味着我必须在用户访问的每个页面上都显示一个加载器,这不是我想要的。
我想要什么:
当我在主页上并点击另一个帖子时,我想等待导航到下一条路线,直到我的操作完成(或失败)加载内容。
React-Router-Redux 似乎可以做到这一点,但我不知道如何实现这一点。
更新问题:
我的动作是这样的:
export function fetchPage(post_type, postSlug) {
return function (dispatch) {
dispatch({type: FETCH_PAGE_START});
axios.get(`${url}/wp-json/wp/v2/${post_type}?slug=${postSlug}`)
.then(response => {
dispatch({
type: FETCH_PAGE,
payload: response.data
});
dispatch(push('/')) // do the routing here
})
.catch(function (error) {
dispatch({
type: FAILED_PAGE
});
});
}
}
我的商店或多或少是这样的:
const appliedMiddleware = applyMiddleware( thunk, createLogger(), routerMiddleware(history));
export default createStore(combinedReducers, appliedMiddleware);
所以我认为我走在正确的道路上,但我仍然无法让它发挥作用。它仍然会立即导航而不是延迟。
【问题讨论】:
-
您的问题与您链接的问题有何不同?您从这些答案中尝试了什么,结果如何?
-
另一个问题中给出的答案(与给我的答案几乎相同)由于某种原因对我不起作用。当我的操作
FetchPost收到数据时,我调用dispatch(push('/about/'))。现在,当我从主页导航到我的新闻帖子时,它立即导航到另一个 URL(例如 /news/newspost)并且我看到了一个加载器,当获取数据时,URL 从 /news/newspost 更改为 /about (因为我添加了 '/About/' 来测试它)。但除了 URL 更改之外,什么也没有发生。
标签: reactjs react-router react-redux react-router-v4