最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • React-Router-Dom中文翻译 2:主要组件

    正文概述 掘金(前端切菜师)   2020-12-06   732

    主要组件

    React Router中的组件主要分为三类:

    • 路由,像<BrowserRouter><HashRouter>
    • 路由匹配器,例如<Route><Switch>
    • 导航,比如<Link><NavLink><Redirect>,我们还喜欢将导航组件视为“路由导航”。

    您在您的React app中使用时,您应该从react-router-dom中导入Web应用程序中所要使用的所有组件。

    import { BrowserRouter, Route, Link } from "react-router-dom";
    

    Routers

    每个React Router应用程序的核心都是Router Component。对于Web项目,react-router-dom提供<BrowserRouter><HashRouter>两种router。两者之间的主要区别是它们存储URL和与Web服务器通信的方式

    • <BrowserRouter>使用常规的URL路径。这些通常是最简单的的URL,但是它们要求和服务器端的URL地址完全匹配。具体来说,您的Web服务器需要在所有由React Router上管理的URL上提供相同的页面。Create React App在开发中自身便是支持此功能的,并附带有关如何配置生产服务器的说明。
    • <HashRouter>将当前页面位置放置在URL的hash部分中,因此URL看起来像http://example.com/#/your/page。由于哈希从不发送到服务器,因此这意味着不需要特殊的服务器配置。

    要使用路由器,只需确保将其呈现在元素层次结构的根目录下即可。通常,您会将顶级<App>元素包装在路由器中,如下所示:

    import React from "react";
    import ReactDOM from "react-dom";
    import { BrowserRouter } from "react-router-dom";
    
    function App() {
      return <h1>Hello React Router</h1>;
    }
    
    ReactDOM.render(
      <BrowserRouter>
        <App />
      </BrowserRouter>,
      document.getElementById("root")
    );
    

    Route Matchers(路由匹配器)

    有两种路由匹配组件:SwitchRoute。当<Switch>被渲染,它会搜索子<Route>并找到一个Route的path和当前的URL匹配的组件。当找到一个匹配项时,它将渲染该<Route>并忽略其他所有对象。这意味着您依据您的path的使用情况来排列您的<Route>顺序。

    如果没有<Route>匹配项,则<Switch>将不会渲染任何组件(null)。

    import React from "react";
    import ReactDOM from "react-dom";
    import {
      BrowserRouter as Router,
      Switch,
      Route
    } from "react-router-dom";
    
    function App() {
      return (
        <div>
          <Switch>
            {/*
              如果当前URL是/ about,则呈现此路由,而其余的则被忽略
            */}
            <Route path="/about">
              <About />
            </Route>
    
            {/* 请注意这两种路线的排序方式。 更详细的path =“ /contact/:id”在path =“/contact”之前,因此匹配此路由时时,将呈现<Contact> */}
            <Route path="/contact/:id">
              <Contact />
            </Route>
            <Route path="/contact">
              <AllContacts />
            </Route>
    
            {/* 如果先前的路由均未提供任何内容,此路线可作为后备路线。
                重要提示:路径=“ /”的路线将始终匹配URL,因为所有URL均以/开头。
                所以为什么我们把这个放在最后 */}
            <Route path="/">
              <Home />
            </Route>
          </Switch>
        </div>
      );
    }
    
    ReactDOM.render(
      <Router>
        <App />
      </Router>,
      document.getElementById("root")
    );
    

    需要注意的重要一件事是<Route path>匹配路由URL的开头,而不是整个URL。因此,<Route path="/">将始终URL匹配。因此,我们通常将path值为/<Route>放到<Switch>的最后。另一种解决方案是使用来匹配整个URL。

    注:虽然React Router不支持元素渲染在外,作为5.1版本,我们推荐您使用的useRouteMatch hook来代替。此外,我们不建议您渲染不带的path的<Route>,而建议您使用hook来访问所需的任何变量。

    Navigation (导航/路由修改器)

    React Router提供了一个<Link>在您的应用程序中创建链接的组件。无论您在何处呈现<Link><a>)都会在HTML文档中呈现锚点。

    <Link to="/">Home</Link>
    // <a href="/">Home</a>
    

    <NavLink>是一种特殊类型的<Link>,可以通过URL的location动态进行匹配。

    <NavLink to="/react" activeClassName="hurray">
      React
    </NavLink>
    // 当URL为/react,将会渲染:
    // <a href="/react" className="hurray">React</a>
    
    // 当是其他情况将渲染:
    // <a href="/react">React</a>
    

    每当您要强制导航时,都可以使用。当被渲染,它将导航到它的to属性下的页面。

    <Redirect to="/login" />
    

    起源地下载网 » React-Router-Dom中文翻译 2:主要组件

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元