【问题标题】:React router changes URL but not the viewReact 路由器更改 URL 但不更改视图
【发布时间】:2019-12-07 14:27:38
【问题描述】:

您好,我的 react 项目中有一个单独的路由和链接文件,当单击链接时,它会更改 URL,但不会更改视图,我不知道为什么。

这是我的 index.js

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom';
import Routes from "./router";
import RenderSite from './App';

ReactDOM.render(<BrowserRouter><RenderSite /></BrowserRouter>, document.getElementById('site-wrapper'));

这是我的链接文件

import React from 'react';
import { Link } from 'react-router-dom';

const HeaderNav = () => {
    return(
        <div className="header-links">
            <Link to="/" className="link">Home</Link>
            <Link to="/about" className="link">About</Link>
            <Link to="/contact" className="link">Contact Us</Link>
        </div>
    );
}

export default HeaderNav;

最后这是我的 router.js

import React from 'react'
import HomePage from './pages/home'
import AboutPage from './pages/about'
import ContactPage from './pages/contact'
import {
  Switch,
  Route
} from 'react-router-dom';

const Routes = () => (
    <Switch>
      <Route exact path="/" component={HomePage} />
      <Route exact path="/about" component={AboutPage} />
      <Route exact path="/contact" component={ContactPage} />
    </Switch>
);

export default Routes;

为了清楚起见,这里是我尝试加载的页面之一的示例:

import React from 'react'
import PageLayout from '../components/layout'

class AboutPage extends React.Component  {
    render() {
      return (
        <div>
        <PageLayout />
        <p>About page</p>
        </div>
      );
    }
}

export default AboutPage

【问题讨论】:

  • 尝试像这样在路由中添加withRouter component={withRouter(MyComponent)}
  • 你在哪里渲染Routes组件?

标签: javascript reactjs routing


【解决方案1】:

我看不到您的App.js 代码。您已经在index.js 中导入了Routes,但还没有使用它。您需要在App 组件中添加Routes 组件。如下所示:

function App(){
  return(
    <div>
      {Routes()}
    </div>
  )
}

【讨论】:

    【解决方案2】:

    导入BrowserRouter 并在BrowserRouter 中包裹路由

    import React from 'react'
    import HomePage from './pages/home'
    import AboutPage from './pages/about'
    import ContactPage from './pages/contact'
    import {
      Switch,
      Route,
      BrowserRouter as Router
    } from 'react-router-dom';
    
    const Routes = () => (
        <Router>
         <Switch>
          <Route exact path="/" component={HomePage} />
          <Route exact path="/about" component={AboutPage} />
          <Route exact path="/contact" component={ContactPage} />
         </Switch>
        </Router> 
    );
    
    export default Routes;
    

    【讨论】:

    • 谢谢,我试过了,但没用,所有内容都包含在我 index.js 中的 browserrouter 标签中
    • @user2983251 这是我的沙箱codesandbox.io/s/musing-meadow-ttpw6
    • @user2983251 可以分享一下你的需求截图吗
    猜你喜欢
    • 2017-12-15
    • 2020-04-07
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多