【问题标题】:Menu component with react router not rendering带有反应路由器的菜单组件未呈现
【发布时间】:2019-03-20 14:52:42
【问题描述】:

我只是反应路由器的新手,这是我的第一次尝试:)

问题

如果我点击正确的链接(例如<NavLink to='/BubbleSort'>Bubble sort</NavLink>),我没有得到内容,页面仍然没有内容。

代码

import React, { Component } from 'react';
import './App.css';
import {
  Route,
  HashRouter
} from 'react-router-dom';
import BubbleSort from './Components/BubbleSort';
import InsertionSort from './Components/InsertionSort';
import Menu from './Components/Menu';


class App extends Component {

  render() {
    return (
    <HashRouter>
      <div className="App">
        <Menu/>
        <div className="content">
          <Route path="./Components/BubbleSort" component = { BubbleSort }/>
          <Route path="./Components/InsertionSort" component = { InsertionSort }/>
        </div>
      </div>
    </HashRouter>
    );
  }
}

export default App;

下面我们有Menu 组件

import React, {Component} from 'react';
import './Menu.css';
import {
    NavLink,
  } from 'react-router-dom';



class Menu extends Component {

    render() {
        return(
                <nav className="navbar">
                    <div 
                        className="nav-button" >
                        <NavLink to='/BubbleSort'>Bubble sort</NavLink>
                    </div>
                    <div 
                        className="nav-button">
                        <NavLink to="./InserionSort">Insertion sort</NavLink>
                    </div>
                    <div 
                        className="nav-button" >
                        <NavLink>Selection sort</NavLink>
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/mergeSort">
                        Merge sort
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/quickSort">
                        Quick sort
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/radixSort">
                        Radix sort
                    </div>
                </nav>
        )
    }
}

export default Menu;

预期行为

如果我点击&lt;NavLink to='/BubbleSort'&gt;Bubble sort&lt;/NavLink&gt;,页面必须显示BubbleSort 组件的实际内容。

考虑

1)Menu组件在文件夹“./Components/Menu”中,App.js在主Src文件夹中,BubbleSort.js在文件夹“./Components/BubbleSort”中

我跟着this link 做了这个小导航栏,我认为问题与菜单组件的使用有关,但我不知道如何解决它。

【问题讨论】:

  • 尝试在
    内添加“
  • RouteNavLink 应该有 relative path
  • @JorgeFélixCazarez 这里的问题是由于不正确的语法和组件使用。 Switch 是一个完全不同的故事。 :)
  • @Legeo 在RouteNavLink 组件中分别使用了不同的pathto。这就是NavLink 不起作用的原因
  • 我没有看到 ,它是真的@AjayGupta

标签: javascript reactjs react-router navbar


【解决方案1】:

路由路径不应该是组件文件路径。 它应该是您在 NavLink 中放入(到)道具的内容。 Demo Reference code pen

import React, { Component } from 'react';
import './App.css';
import {
  Route,
  HashRouter
} from 'react-router-dom';
import BubbleSort from './Components/BubbleSort';
import InsertionSort from './Components/InsertionSort';
import Menu from './Components/Menu';


class App extends Component {

  render() {
    return (
    <HashRouter>
      <div className="App">
        <Menu/>
        <div className="content">
          <Route path="/BubbleSort" component = { BubbleSort }/>
          <Route path="/InsertionSort" component = { InsertionSort }/>
        </div>
      </div>
    </HashRouter>
    );
  }
}

export default App;

import React, {Component} from 'react';
import './Menu.css';
import {
    NavLink,
  } from 'react-router-dom';



class Menu extends Component {

    render() {
        return(
                <nav className="navbar">
                    <div 
                        className="nav-button" >
                        <NavLink to='/BubbleSort'>Bubble sort</NavLink>
                    </div>
                    <div 
                        className="nav-button">
                        <NavLink to="/InserionSort">Insertion sort</NavLink>
                    </div>
                    <div 
                        className="nav-button" >
                        <NavLink>Selection sort</NavLink>
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/mergeSort">
                        Merge sort
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/quickSort">
                        Quick sort
                    </div>
                    <div 
                        className="nav-button" 
                        a href="/radixSort">
                        Radix sort
                    </div>
                </nav>
        )
    }
}

export default Menu;

【讨论】:

  • 感谢您的贡献。请确保在回答问题时,您还解释了 OP 代码的问题所在。它有助于更​​好地理解问题和解决方案。谢谢! :)
【解决方案2】:

RouteNavLink 组件应该这样写:-

<Route path='/Components/BubbleSort' component={ BubbleSort } />
<Route path='/Components/InsertionSort' component={ InsertionSort } />

NavLink 组件将写成如下:-

<NavLink to='/Components/InsertionSort'>Insertion Sort</NavLink>

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签