Javascript 如果没有来自外部API的数据,如何重定向到404(universal React+;Redux应用程序)?
我有一个带有参数的路由,如果一个操作从外部API返回没有数据,我想渲染/重定向到404路由。最明智的做法是什么 这是路由器:Javascript 如果没有来自外部API的数据,如何重定向到404(universal React+;Redux应用程序)?,javascript,reactjs,redux,react-router,Javascript,Reactjs,Redux,React Router,我有一个带有参数的路由,如果一个操作从外部API返回没有数据,我想渲染/重定向到404路由。最明智的做法是什么 这是路由器: export default ( <Route path="/" component={App}> <Route path=":venueName" component={Venue} /> <Route path="*" component={NotFound} /&g
export default (
<Route path="/" component={App}>
<Route path=":venueName" component={Venue} />
<Route path="*" component={NotFound} />
</Route>
);
行动如下:
export const fetchVenue = (id) => ({
type: 'FETCH_VENUE',
payload: axios.get('http://someAddress/api/venues/id'),
});
我在这里遇到的问题是如何在服务器端渲染和任意数量的路由中实现这一点。我在express中使用react router的“match”来呈现标记。如果您想让我发布更多代码,请告诉我。组件不适合这种逻辑,IMHO。我在我的操作中这样做,并使用
react router
的“浏览器历史记录”。比如:
export function fetchBrand(id) {
return function(dispatch) {
fetchData(`brands/${id}`, {
headers: { 'X-Token-Auth': localStorage.getItem('token')}
}).then(response => {
dispatch({
type: FETCH_BRAND_SUCCESS,
payload: response
});
}).catch(err => {
if (err.response.status == 404) {
browserHistory.push("/my404page");
}
});
}
}
例如,我会有一些
路线
到我的404页
。很有效,谢谢!此方法将要求我为每个具有参数的路由执行.catch()。这样可以吗,还是看起来太费劲了?这就是我用来触发推动的原因:我想我无法回答这个问题。你总是想处理错误,所以除非你能想出一个全局的axios
错误捕捉方法,否则我认为你应该这样做。
export function fetchBrand(id) {
return function(dispatch) {
fetchData(`brands/${id}`, {
headers: { 'X-Token-Auth': localStorage.getItem('token')}
}).then(response => {
dispatch({
type: FETCH_BRAND_SUCCESS,
payload: response
});
}).catch(err => {
if (err.response.status == 404) {
browserHistory.push("/my404page");
}
});
}
}