javascript - React-router 与有效路由不匹配

标签 javascript reactjs react-router

无论我做什么,我都无法让这个 react 路由器匹配路径的第二部分。

Express 服务器正在为任何 URL 匹配返回 index.html(我没有在任何 URL 上收到 GET 错误,所以我认为这没问题)

app.get('/*', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
});

这里是我尝试过的一些路由示例,根据react router 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 = 成功 > 返回登录组件

示例 3)

 <Route path="/test/login" component={Login} />

或者

 <Route path="test/login" component={Login} />

http://localhost:3100/test/login = 失败 > 给我空白屏幕

我使用的是 2.5 版本,任何帮助将不胜感激!

** React 路由器的 yarn 转储 **

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"

最佳答案

尝试 path="login" 而不是 path="/login" 。嵌套路由中不需要路径前的斜杠。

<Route path="test/">
  <IndexRoute component={Home} />
  <Route path="login" component={Login} />
</Route>

关于javascript - React-router 与有效路由不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40152688/

相关文章:

reactjs - React-Router 嵌套路由加载空白页面而不是在父组件内部加载

javascript - 如何获取具有特定类的多个元素 ID

java - 如何知道javascript代码是否已经在Selenium Java中执行?

twitter-bootstrap - 如何插入 bootstrap.js 来 react 应用程序?

javascript - 将组件方法从回调绑定(bind)到子组件

reactjs - 我需要将浏览器路由器一分为二

ReactJS、react-router 和 socket.io

javascript - 使用 img 标签自动调整大小或 Canvas 重绘来调整缩略图图像预览大小?

javascript - 每 XX 秒将元素中的数字值增加 0.07

javascript - 如何将 HTML 小部件代码转换为 NEXTjs 代码以在应用程序中使用(CoinMarketCap 价格选取框)