react-router中Link標簽和a標簽有什么區(qū)別
1.功能:
- Link:在單頁應用程序(SPA)中提供導航,而不會導致頁面重新加載。當用戶點擊鏈接時,React會阻止瀏覽器默認的頁面刷新行為,并且使用
react-router提供的導航方式,只更新URL并渲染對應的組件,從而實現(xiàn)單頁面應用(SPA)的效果。。 - a:單擊時會導致完整頁面重新加載,導航到新
URL。
2.性能:
- Link:由于不會導致頁面重新加載,因此它提供更好的用戶體驗,特別是在
SPA中。它提高了性能,因為避免了不必要的網(wǎng)絡請求。 - a:完整頁面重新加載會導致較慢的用戶體驗,因為需要從服務器獲取新頁面。
3.無障礙:
- Link:提供更好的無障礙性,因為它可以通過鍵盤聚焦和激活。
- a:可能不那么無障礙,因為它不提供與按鈕或其他交互式元素相同的鍵盤導航和焦點行為。
使用Link標簽
屬性描述
to
跳轉鏈接的路徑,如 /users/123。
query
已經(jīng)轉化成字符串的鍵值對的對象。
hash
URL 的 hash 值,如 #a-hash。
注意:React Router 目前還不能管理滾動條的位置,并且不會自動滾動到 hash 對應的元素上。如果需要管理滾動條位置,可以使用 scroll-behavior 這個庫。
state
保存在 location 中的 state。
activeClassName
當某個 route 是激活狀態(tài)時,<Link> 可以接收傳入的 className。失活狀態(tài)下是默認的 class。
activeStyle
當某個 route 是激活狀態(tài)時,可以將樣式添加到鏈接元素上。
onClick(e)
自定義點擊事件的處理方法。如處理 <a> 標簽一樣 - 調用 e.preventDefault() 來防止過度的點擊,同時 e.stopPropagation() 可以阻止冒泡的事件。
其他
你也可以在標簽上傳入一些你想要的 props,如 title,id,className 等等。
link使用示例:
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
const Home = () => <h2>Home</h2>;
const About = () => <h2>About</h2>;
const App = () => (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about/">About</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about/" component={About} />
</div>
</Router>
);
export default App;區(qū)別
<Link> 是 react-router 里實現(xiàn)路由跳轉的鏈接,一般配合 <Route> 使用,react-router 會接管Link 的默認鏈接跳轉行為,區(qū)別于傳統(tǒng)的頁面跳轉,<Link> 的“跳轉”行為只會觸發(fā)相匹配的 <Route> 對應的頁面內容更新,而不會刷新整個頁面。
而 <a> 標簽就是普通的超鏈接了,用于從當前頁面跳轉到 href 指向的另一個頁面(非錨點情況)。
對比<a>,Link組件避免了不必要的重渲染,react-router只更新變化的部分從而減少DOM性能消耗,react的創(chuàng)新之處在于,它利用虛擬DOM的概念和diff算法實現(xiàn)了對頁面的"按需更新",react-router很好地繼承了這一點
Link做了3件事情:
1、如果Link上定義了onClick方法,則執(zhí)行該onclick方法
2、click的時候阻止a標簽默認事件(這樣子點擊<a href="/abc">123</a>就不會跳轉和刷新頁面)
3、再取得跳轉href(即是to),用history(前端路由兩種方式之一,history & hash)跳轉,此時只是鏈接變了,并沒有刷新頁面
到此這篇關于react-router中Link標簽和a標簽有什么區(qū)別的文章就介紹到這了,更多相關react-router Link標簽和a標簽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
react?native?reanimated實現(xiàn)動畫示例詳解
這篇文章主要為大家介紹了react?native?reanimated實現(xiàn)動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
react數(shù)據(jù)管理機制React.Context源碼解析
這篇文章主要為大家介紹了react數(shù)據(jù)管理機制React.Context源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
詳解React-Native解決鍵盤遮擋問題(Keyboard遮擋問題)
本篇文章主要介紹了React-Native解決鍵盤遮擋問題(Keyboard遮擋問題),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Docker部署SpringBoot項目到云服務器的實現(xiàn)步驟
Docker作為一種輕量級的容器化技術,為開發(fā)者提供了快速、便捷的部署方案,本文主要介紹了Docker部署SpringBoot項目到云服務器,具有一定的參考價值,感興趣的可以了解一下2024-01-01
react?hooks?計數(shù)器實現(xiàn)代碼
這篇文章主要介紹了react?hooks計數(shù)器實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
react純函數(shù)組件setState更新頁面不刷新的解決
在開發(fā)過程中,經(jīng)常遇到組件數(shù)據(jù)無法更新,本文主要介紹了react純函數(shù)組件setState更新頁面不刷新的解決,感興趣的可以了解一下2021-06-06
React如何解決fetch跨域請求時session失效問題
這篇文章主要給大家介紹了關于React如何解決fetch跨域請求時session失效問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-11-11

