真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

區(qū)別React-Router中match的path和url-創(chuàng)新互聯

問題

React Router開發(fā)中有關組件的match屬性的兩個屬性path和url,容易讓人混淆,特別記錄于此。

10年積累的網站制作、網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有薊州免費網站建設讓你可以放心的選擇與我們合作。

解釋

官方描述如下:

  • path - (string) The path pattern used to match. Useful for building nested s
  • url - (string) The matched portion of the URL. Useful for building nested s

path用來標識路由匹配的URL部分。React Router使用了Path-to-RegExp庫將路徑字符串轉為正則表達式。然后正則表達式會匹配當前路徑。

當路由路徑和當前路徑成功匹配,會生成一個對象match。match對象有更多關于URL和path的信息。這些信息可以通過它的屬性獲取,如下所示:

  • match.url.返回URL中匹配部分的字符串。用于創(chuàng)建嵌套的很有用。
  • match.path.用于匹配路徑模式。用來創(chuàng)建嵌套的。
  • match.isExact.返回布爾值,如果準確(沒有任何多余字符)匹配則返回true。
  • match.params.返回一個對象包含Path-to-RegExp包從URL解析的鍵值對。

只有完全理解了的這個match對象屬性及其有關屬性,才能算是掌握了基本類型嵌套路由開發(fā)的基礎部分(本人拙見,僅供參考)。

舉例1

我們不妨考慮一個小例子,如下所示:

觀察路由"/users/:userId"
此例中,match.path的返回值將是 "/users/:userId"。
而match.url 的返回值將是:userId的值,例如"users/5"。
請注意上面官方描述中,match.path指用于匹配的模式部分,代表了一種格式,而match.url代表一個具體的計算后的路徑表達值。

舉例2

根據上面的解釋,match.path和match.url的值是相同的,此時你想使用哪一個都行。但是,本人建議還是遵循官方解釋,在嵌套式組件中盡量使用match.url,而在嵌套式組件中盡量使用match.path。
從官方網站也會觀察到上面混合使用情況。

在Recursive Paths部分,你會觀察到如下代碼:

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

const PEEPS = [
  { id: 0, name: "Michelle", friends: [1, 2, 3] },
  { id: 1, name: "Sean", friends: [0, 3] },
  { id: 2, name: "Kim", friends: [0, 1, 3] },
  { id: 3, name: "David", friends: [1, 2] }
];

const find = id => PEEPS.find(p => p.id == id);

const RecursiveExample = () => (
  
    
  
);

const Person = ({ match }) => {
  const person = find(match.params.id);

  return (
    

{person.name}’s Friends

    {person.friends.map(id => (
  • {find(id).name}
  • ))}
); }; export default RecursiveExample;

而在佳文https://www.sitepoint.com/react-router-v4-complete-guide/
中也使用了混合使用的情況(見“Demo 3: Nested routing with Path parameters”一節(jié)):

const Products = ({ match }) => {

const productsData = [
{
id: 1,
name: 'NIKE Liteforce Blue Sneakers',
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin molestie.',
status: 'Available'

},

//Rest of the data has been left out for code brevity

];
/* Create an array of <li> items for each product
var linkList = productsData.map( (product) => {
return(


  • ${match.url}/${product.id}}>
    {product.name}


  • )

    })

    return(




    Products


      {linkList}


     }/>
         (
            
    Please select a product.
    )} />

    )
    }

    引用

    1.https://www.zcfy.cc/article/react-router-v4-the-complete-guide-mdash-sitepoint-4448.html
    2.https://teamtreehouse.com/community/what-is-the-difference-between-path-and-url-in-match-prop-of-reactrouter-route-component-react-router-basics
    3.https://reacttraining.com/react-router/

    另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


    新聞標題:區(qū)別React-Router中match的path和url-創(chuàng)新互聯
    標題鏈接:http://weahome.cn/article/dgsjci.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部