亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

React模擬實現(xiàn)Vue的keepAlive功能

 更新時間:2024年10月28日 09:13:17   作者:墨墨博客  
Vue中,keep-alive組件可以緩存組件狀態(tài),在路由切換時重新掛載,實現(xiàn)這一功能在React中并不簡單,但我們可以借助一個第三方庫——react-activation 來模擬Vue的keep-alive功能,需要的朋友可以參考下

前言

在React中,默認(rèn)情況下組件在被卸載后會銷毀狀態(tài),這與Vue的keep-alive功能不同。在Vue中,keep-alive組件可以緩存組件狀態(tài),在路由切換時重新掛載。實現(xiàn)這一功能在React中并不簡單,但我們可以借助一個第三方庫——react-activation 來模擬Vue的keep-alive功能。

react-activation簡介

可以看看github介紹:react-activation

react-activation 是一個用于React的狀態(tài)保持庫,可以緩存組件的狀態(tài)和DOM,適用于多頁面應(yīng)用的路由緩存等場景。它的核心功能包括:

  • 緩存組件:在不卸載組件的情況下保存其狀態(tài)和DOM。
  • 恢復(fù)組件:當(dāng)組件重新激活時,可以保留之前的狀態(tài)和DOM,而無需重新渲染。
  • 緩存控制:可以通過配置選項控制哪些組件需要緩存,哪些不需要。

react-activation安裝

yarn add react-activation
# 或者
npm install react-activation

兼容性

  • React v16 / v17 / v18

  • Preact v10+

  • 兼容 SSR

注意?。?!

  • 不要使用 <React.StrictMode /> 嚴(yán)格模式
  • (React v18+) 不要使用 ReactDOMClient.createRoot, 而是使用 ReactDOM.render

項目里代碼實現(xiàn)

入口文件main.tsx

在不會被銷毀的位置放置 外層,一般為應(yīng)用入口處

import { render } from 'react-dom';
import { AliveScope } from 'react-activation';
render(
  <AliveScope>
    <Router>
      <App />
    </Router>
  </AliveScope>,
  document.getElementById('root')
);

路由文件 router.tsx

export const routes = [
  {
    path: '/',
    element: <Home />,
    keepAlive: true
  },
  {
    path: '/home',
    element: <Home />,
    keepAlive: true
  },
  {
    path: '/xxx',
    element: <Index2 />
  },
]

App.tsx文件

這里可以根據(jù)router.tsx的配置看是否需要緩存, 引入KeepAlive組件,設(shè)置cacheKey來避免沖突

function App() {
const location = useLocation();
const route = useRoutes(
    routes.map(item => ({
      ...item,
      element: item.keepAlive ? (
        <KeepAlive cacheKey={item.path}>{item.element}</KeepAlive>
      ) : (
        item.element
      )
    }))
  );
  // 這里根據(jù)是否為首頁設(shè)置z-50是因為在首頁有多個Popup,緩存了首頁后點擊Popup的里面內(nèi)容跳轉(zhuǎn)別的頁面,這個Popup因為層級很高,并且和root是同級節(jié)點所以會一直存在,所以給這些Popup也要設(shè)置層級z-10,這樣在跳轉(zhuǎn)至別的頁面時,這些Popup的層級10沒有50高就不會出現(xiàn)
return (
	<div
         className={`w-full h-screen flex justify-center  bg-primary  relative ${
           location.pathname === '/home' || location.pathname === '/'
             ? ''
             : 'z-50'
         }`}
       >
        <div className="w-[393px] h-screen">
        {route}
        </div>
    </div>
	)
}

總結(jié)

react-activation 是一個非常實用的庫,能夠幫助我們在React中實現(xiàn)類似于Vue keep-alive的緩存功能。在單頁面應(yīng)用中,合理地使用KeepAlive來緩存組件,可以顯著提升用戶體驗,減少重復(fù)渲染帶來的性能消耗。 引入KeepAlive組件,設(shè)置cacheKey來避免沖突,是最重要的!

以上就是React模擬實現(xiàn)Vue的keepAlive功能的詳細內(nèi)容,更多關(guān)于React keepAlive功能的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決React報錯Style prop value must be an object

    解決React報錯Style prop value must be a

    這篇文章主要為大家介紹了React報錯Style prop value must be an object解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 對react中間件的理解

    對react中間件的理解

    這篇文章主要介紹了對react中間件的理解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React虛擬渲染實現(xiàn)50個或者一百個圖表渲染

    React虛擬渲染實現(xiàn)50個或者一百個圖表渲染

    這篇文章主要為大家介紹了React虛擬渲染實現(xiàn)50個或者100個圖表渲染的實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • react-native 圓弧拖動進度條實現(xiàn)的示例代碼

    react-native 圓弧拖動進度條實現(xiàn)的示例代碼

    本篇文章主要介紹了react-native 圓弧拖動進度條實現(xiàn)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 一文掌握React?組件樹遍歷技巧

    一文掌握React?組件樹遍歷技巧

    這篇文章主要為大家介紹了React?組件樹遍歷技巧的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • react-player實現(xiàn)視頻播放與自定義進度條效果

    react-player實現(xiàn)視頻播放與自定義進度條效果

    本篇文章通過完整的代碼給大家介紹了react-player實現(xiàn)視頻播放與自定義進度條效果,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-01-01
  • ReactQuery系列React?Query?實踐示例詳解

    ReactQuery系列React?Query?實踐示例詳解

    這篇文章主要為大家介紹了ReactQuery系列React?Query?實踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React key值的作用和使用詳解

    React key值的作用和使用詳解

    這篇文章主要介紹了React key值的作用和使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React?Native中原生實現(xiàn)動態(tài)導(dǎo)入的示例詳解

    React?Native中原生實現(xiàn)動態(tài)導(dǎo)入的示例詳解

    在React?Native社區(qū)中,原生動態(tài)導(dǎo)入一直是期待已久的功能,在這篇文章中,我們將比較靜態(tài)和動態(tài)導(dǎo)入,學(xué)習(xí)如何原生地處理動態(tài)導(dǎo)入,以及有效實施的最佳實踐,希望對大家有所幫助
    2024-02-02
  • react hooks實現(xiàn)原理解析

    react hooks實現(xiàn)原理解析

    這篇文章主要介紹了react hooks實現(xiàn)原理,文中給大家介紹了useState dispatch 函數(shù)如何與其使用的 Function Component 進行綁定,節(jié)后實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10

最新評論