【问题标题】:React Router: Render new view without page refreshReact Router:在不刷新页面的情况下渲染新视图
【发布时间】:2017-12-31 13:01:23
【问题描述】:

你好!我要做的是重新设计我的 react-router,以便 NavLink 在点击时呈现一个全新的页面,而不是在 div 的底部呈现,如上面的 gif 所示。

这是我的主要 App.js 组件的内容:

import React, { Component } from 'react';
import './App.css';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Home from './Home.js';
import About from './About.js';
import September from './September.js';
import Trilogy from './Trilogy.js';

class App extends Component {
  render() {
    return (
      <Router>
        <div>
          <Switch>
            <Route exact path='/' component={Home} />
            <Route path='/about/' component={About} />
            <Route path='/september/' component={September} />
            <Route exact path='/september/trilogy/' component={Trilogy} />
          </Switch>
        </div>
      </Router>
    );
  }
}
export default App;

Home 组件的代码,其中包含 Home Page 中使用的 NavBar。

import React, { Component } from 'react';
import { BrowserRouter as Router, NavLink, Switch, Route } from 'react-router-dom';
import logo from './logo.png';
import About from './About.js';
import September from './September.js';
import Trilogy from './Trilogy.js';

let NavBar = () => {
  return (
    <div>
      <h2 className="container2"><NavLink to='/about/'>About</NavLink> </h2>
      <img src={logo} className="somersetLogo" alt="somersetLogo" />
      <h2 className="container" ><a href="mailto:contact@somersetproductions.co" className="mailto">Contact</a></h2>
    </div>
  )
}

class Home extends Component {
  render() {
    return (
      <Router>
        <div>
          <NavBar />
          <Switch>
            <Route exact path='/about/' component={About} />
          </Switch>
        </div>
      </Router>
    )
  }
}

export default Home;

知道出了什么问题吗?任何帮助,将不胜感激!谢谢!

【问题讨论】:

  • 你的 react 路由器版本是多少?

标签: reactjs react-router


【解决方案1】:

如果您使用的是 react router v4 或更高版本,应该是这样的。

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

<Link to='/about'>
    About
</Link>

为什么您在不需要的Home 组件中再次定义路由器。将路由配置保留在 App 组件中就足够了。希望这可以帮助。快乐编码!

【讨论】:

  • 感谢您的帮助!不幸的是,该解决方案不起作用。 Link 的功能似乎与 NavLink 完全一样。单击将信息呈现在同一个 div 中,但不是作为另一个页面。是否可以使用 React Router 做一个多页面应用程序,或者我要求做的事情是不可能的?
  • 编辑:我想通了!你的方式是对的!我将 Link 放在 Switch 组件之后,去掉了 NavBar,它就成功了!万分感谢! @Ravindra Ranwala
猜你喜欢
  • 2014-01-17
  • 1970-01-01
  • 2017-05-11
  • 2019-11-25
  • 2020-01-06
  • 2018-12-31
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
相关资源
最近更新 更多