react切换路由时url重复的问题

发布于 2022-09-12 13:47:23 字数 2697 浏览 27 评论 0

问题描述

我在父组件中用了props.history.push()控制跳转,<Route>设置了exact精确匹配,但是子路由跳转时,url上会重复添加index,每点击一次菜单栏跳转一次,url就会增加一个index, 页面是正常显示的,如图:
ca7e8074409684d289237b8279281fb.pngcd486effd0f230fbf9d6b02c3eec829.png

目录结构:
├── src                         
  ├──── pages                     
    ├───── AdminIndex.js
    ├───── AddArticle.js
    ├───── ArticleList.js
    ├───── Main.js
  ├──── index.js                  
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Main from './pages/Main';

ReactDOM.render(
  <React.StrictMode>
    <Main />
  </React.StrictMode>,
  document.getElementById('root')
);
pages/AdminIndex.js
function AdminIndex(props) {
  const handleClickArticle = e => {
    console.log(e.item.props)
    if (e.key == 'addArticle') {
      props.history.push('index/add')
    } else {
      props.history.push('index/list')
    }
  }

  return (
    <Layout style={{ minHeight: '100vh' }}>
      <Sider>
        <div className="logo" />
        <Menu>
          <Menu.Item>
            工作台
          </Menu.Item>
          <SubMenu key="sub1" title="文章管理" onClick={handleClickArticle}>
            <Menu.Item key="addArticle">添加文章</Menu.Item>
            <Menu.Item key="articleList">文章列表</Menu.Item>
          </SubMenu>
        </Menu>
      </Sider>
      <Layout>
        <Content>
          <div className="site-layout-background">
            <div>
              <Route path="/index/" exact component={AddArticle}></Route>
              <Route path="/index/add" exact component={AddArticle}></Route>
              <Route path="/index/add/:id" exact component={AddArticle}></Route>
              <Route path="/index/list" exact component={ArticleList}></Route>
            </div>
          </div>
        </Content>
      </Layout>
    </Layout>
  );
}

export default AdminIndex;
Main.js
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom'

function Main() {
  return (
    <Router>
      <Route path="/" exact component={Login}/>
      <Route path="/index/" component={AdminIndex}/>
    </Router>
  )
}

export default Main

最近才开始学react,求大佬指教,望轻喷。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

或十年 2022-09-19 13:47:23

我记得好像是 push 里的路由前面要加上/
就是这样

变更前

props.history.push('index/add')

变更后

props.history.push('/index/add')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文