【发布时间】:2016-10-20 11:07:03
【问题描述】:
无论我做什么,我都无法让这个反应路由器匹配路径的第二部分。
Express 服务器正在为任何 URL 匹配返回 index.html(我在任何 URL 上都没有收到 GET 错误,所以我认为这很好)
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
});
这是我尝试过的一些路由示例,根据反应路由器docs,它们应该是有效规则
示例 1)
<Route path="test">
<IndexRoute component={Home} />
<Route path="/login" component={Login} />
</Route>
或
<Route path="test">
<IndexRoute component={Home} />
<Route path="/login" component={Login} />
</Route>
http://localhost:3100/test = 成功 > 返回主组件
http://localhost:3100/test/login = 失败 > 给我空白屏幕
示例 2)
<Route path="/login" component={Login} />
http://localhost:3100/login = Success > 返回登录组件
示例 3)
<Route path="/test/login" component={Login} />
或
<Route path="test/login" component={Login} />
http://localhost:3100/test/login = 失败 > 给我空白屏幕
我使用的是 2.5 版,非常感谢任何帮助!
** react 路由器的 Yarn dump **
react-router@^2.5.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-2.8.1.tgz#73e9491f6ceb316d0f779829081863e378ee4ed7"
dependencies:
history "^2.1.2"
hoist-non-react-statics "^1.2.0"
invariant "^2.2.1"
loose-envify "^1.2.0"
warning "^3.0.0"
【问题讨论】:
-
你试过
<Route path="/login" component={Home} />吗? -
您是否尝试过从“/login”中删除斜线?我认为您可以通过这种方式指定绝对路径,所以
http://localhost:3100/login应该适用于第一个示例? -
对于您的第二个示例,将其更改为
-
@DamienLeroux 我需要 2 条路径才能工作,测试只是一个示例,它可能只是登录,但我需要 /example/login 才能工作。 Mazzu 和 pavel 我都试过了,它们使用 1 条路径但不是 2 条:/
-
更新了我的例子
标签: javascript reactjs react-router