reactjs - 具有基本名称的 react 路由器也匹配没有基本路径的路由

标签 reactjs react-router

我希望我的应用程序从子目录提供服务,比如 localhost:3000/test , 这样路由 tab1tab2 服务于 localhost:3000/test/tab1localhost:3000/test/tab2

为此,我尝试在 React Router 中使用 basename

有效。

然而,只有 localhost:3000/tab1 也匹配 tab1 组件,同样适用于 tab2

如何防止这种情况发生?

import React from "react";
import ReactDOM from "react-dom";
import {
  BrowserRouter as Router,
  Route,
  Switch,
  Redirect,
  Link
} from "react-router-dom";

import "./styles.css";

function App() {
  return (
    <Router basename="/test">
      <Switch>
        <Route path="/tab1" render={props => <div>Hello</div>} />
        <Route path="/tab2" render={props => <div>Hi</div>} />
      </Switch>
    </Router>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

最佳答案

router basename 是为 react-router 的 Link 组件而不是 Route 组成的。

<Link to="/tab1"/> 
// <a href="/test/tab1">

关于reactjs - 具有基本名称的 react 路由器也匹配没有基本路径的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51900724/

相关文章:

javascript - React 路由器呈现空白页面

reactjs - 在 React JS 生命周期方法中设置状态

html - react-router browserHistory 在 Apache 服务器上不起作用

javascript - React-router:如何设置默认子路由并相应修改URL

reactjs - 如何为 reactjs 中的所有子页面创建通用页眉和页脚?

css - React-Native 中的双模态?

android - react js createRef() 返回未定义

javascript - 花括号在 React 中声明一个变量

javascript - 如何在执行 IF 条件时重定向到 ReactJS 中的另一个页面?

reactjs - React History.push 允许用户在新选项卡中打开