【发布时间】:2017-06-06 00:26:18
【问题描述】:
react-router 如何正确处理 Universal 应用中动态内容的 404 页面?
假设我想显示一个带有类似'/user/:userId' 的路由的用户页面。我会有这样的配置:
<Route path="/">
<Route path="user/:userId" component={UserPage} />
<Route path="*" component={NotFound} status={404} />
</Route>
如果我请求/user/valid-user-id,我会得到用户页面。
如果我请求 /foo,我会得到正确的 404。
但是如果我请求/user/invalid-user-id 怎么办。当为用户获取数据时,我会意识到这个用户不存在。所以,接缝的正确做法是:
- 显示 404 页面
- 返回 404 http 代码(用于服务器端 渲染)
- 保持网址不变(我不想要重定向)
我该怎么做?这似乎是一种非常标准的行为。我很惊讶没有找到任何例子......
编辑:
像我这样的接缝并不是唯一一个与之抗争的人。这样的事情会有很大帮助:https://github.com/ReactTraining/react-router/pull/3098
由于我的应用不会很快上线,所以我决定等着看下一个 react-router 版本会提供什么......
【问题讨论】:
-
如何获取用户数据?我认为那里的代码将是您正在寻找的答案的重要组成部分。
-
@KeesvanLierop 我正在使用 redux。所以我会有一个 thunk 动作返回一个 Promise。 promise 返回的错误表明给定的 userId 不存在。默认情况下,此操作将由我的 UserPage 组件触发。但也许在实际渲染组件之前这样做更有意义。我不确定......但我愿意接受建议以使其与 react-router 一起使用......
标签: reactjs react-router universal isomorphic-javascript