问题是我有一个初始获取请求,它从URL获取查询字符串并发出请求以获取指定的产品页面。带佐贺服务器端渲染重定向的反应路由器
在客户端和服务器端使用相同的逻辑和路由。
API请求在redux-saga
中执行,但是当它失败时(没有匹配的产品),该站点已经在/product
路由上,因此需要重定向。
在客户端,这是很容易的,因为它可以动态使用browserHistory
或只是window.location.href
被重定向,而是在服务器上,我将不得不向下传递的res
对象,并使用res.redirect
,可能的话,使用两种不同的用这种方法重定向函数。
另一种解决方案是以最高级的方式捕捉这个;在ReactDOMServer.renderToString(component)
期间的express index.js上,以及客户端端点在失败时 - 具有不同的逻辑。例如,具有快速重定向的404视图。但是,因为saga
不是最上层的,所以抛出这个404并将其捕获到最上层的上下文(express服务器)中需要以非常“肮脏”的try/catch方式来传递它。
任何建议如何解决在正确性方面?我真的不希望路由逻辑在快速方面翻倍,所以我宁愿用同构代码来处理它。