• [React Router v4] Conditionally Render a Route with the Switch Component


    We often want to render a Route conditionally within our application. In React Router v4, the Route components match the current route inclusively so a “stack” of Routes will all be processed. To render a single Route exclusively we can wrap them in the Switch component to render the first Route that matches our current URL.

      <Router basename={props.path}>
        <div>
          <Links />
    
            <Route exact path="/" render={() => <h1>Home</h1>} />
            <Route path="/about" render={() => <h1>About</h1>} />
            <Route path="/contact" render={() => <h1>Contact</h1>} />
            <Route path="/:itemid"
              render={({match}) => <h1>Item: {match.params.itemid}</h1>} />
       
        </div>
      </Router>

    Consider this part of code, we want nav to '/about' path, it will show both about page and itemid page, because it consider /about is part of '/:itemid', to solve this problem, we can introduce 'Switch', it will render first match Route.

    // https://jsbin.com/qijilug
    
    import React from 'react';
    import {
      BrowserRouter as Router,
      Route,
      Link,
      Switch
    } from 'react-router-dom';
    
    const Links = () =>
        <nav>
          <Link to="/">Home</Link>
          <Link to="/about">About</Link>
          <Link to="/contact">Contact</Link>
        </nav>
    
    const App = (props) => (
      <Router basename={props.path}>
        <div>
          <Links />
          <Switch>
            <Route exact path="/" render={() => <h1>Home</h1>} />
            <Route path="/about" render={() => <h1>About</h1>} />
            <Route path="/contact" render={() => <h1>Contact</h1>} />
            <Route path="/:itemid"
              render={({match}) => <h1>Item: {match.params.itemid}</h1>} />
          </Switch>
        </div>
      </Router>
    )
    
    export default App
  • 相关阅读:
    jQuery对象和DOM对象
    虚拟主机的部署(Apache)
    事件流:事件冒泡和事件捕获
    ThinkPHP
    级联下拉列表
    今日份抽自己!!!
    c++中关于输入字符数组的一些问题
    今日新知(关于递归中变量的声明)
    格子游戏(并查集)
    1.3-14大象喝水
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6596330.html
Copyright © 2020-2023  润新知