欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React-router?v6在Class組件和非組件代碼中的正確使用

 更新時間:2024年03月14日 10:06:03   作者:超喜歡你呦  
這篇文章主要介紹了React-router?v6在Class組件和非組件代碼中的正確使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

最近內部正在開發(fā)的 react 項目 react-router 全線升級到了 v6 版本

v6 版本中很多 API 進行了重構變更,導致很多舊寫法失效

下面記錄一下 history 模塊在 v6 中的用法

在封裝的request等非組件代碼中如何使用 history 進行路由?

1. history路由用法

createBrowserHistory() 創(chuàng)建的 history 與新的 unstable_HistoryRouter API進行上下文綁定

注意:

在 v6 版本中如果不對上下文進行綁定直接使用 createBrowserHistory() 創(chuàng)建的 history 進行編程式路由操作

將出現(xiàn)路由變化 UI 不變化的問題,hashhistory 模式同理。

import { createBrowserHistory } from 'history';
import { unstable_HistoryRouter as HistoryRouter } from 'react-router-dom';

let history = createBrowserHistory();

function App() {
  return (
    <HistoryRouter history={history}>
      // The rest of your app
    </HistoryRouter>
  );
}

history.push("/foo");

2. hash路由用法

import HashHistory from 'history/hash';
import { unstable_HistoryRouter as HistoryRouter } from 'react-router-dom';

function App() {
  return (
    <HistoryRouter history={HashHistory}>
      // The rest of your app
    </HistoryRouter>
  );
}

history.push("/foo");

項目升級了v6版本,怎么兼容舊的Class組件?

使用新的 hooks API封裝高階組件包裹 class 組件進行 props 的傳遞

import {
  useLocation,
  useNavigate,
  useParams,
} from "react-router-dom";

function withRouter(Component) {
  function ComponentWithRouterProp(props) {
    let location = useLocation();
    let navigate = useNavigate();
    let params = useParams();
    return (
      <Component
        {...props}
        router={{ location, navigate, params }}
      />
    );
  }

  return ComponentWithRouterProp;
}

// class components
@withRouter()
class YouClassComponent extends React.Component {}
export default YouClassComponent

// or

class YouClassComponent extends React.Component {}
export default withRouter(YouClassComponent)

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • React路由參數(shù)傳遞與嵌套路由的實現(xiàn)詳細講解

    React路由參數(shù)傳遞與嵌套路由的實現(xiàn)詳細講解

    這篇文章主要介紹了React路由參數(shù)傳遞與嵌套路由的實現(xiàn),嵌套路由原則是可以無限嵌套,但是必須要讓使用二級路由的一級路由匹配到,否則不顯示,需要的朋友可以參考一下
    2022-09-09
  • React Router v4 入坑指南(小結)

    React Router v4 入坑指南(小結)

    這篇文章主要介紹了React Router v4 入坑指南(小結),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • React中使用async validator進行表單驗證的實例代碼

    React中使用async validator進行表單驗證的實例代碼

    react上進行表單驗證是很繁瑣的,在這里使用async-validator處理起來就變的很方便了,接下來通過本文給大家介紹React中使用async validator進行表單驗證的方法,需要的朋友可以參考下
    2018-08-08
  • 詳解create-react-app 2.0版本如何啟用裝飾器語法

    詳解create-react-app 2.0版本如何啟用裝飾器語法

    這篇文章主要介紹了詳解create-react-app 2.0版本如何啟用裝飾器語法,cra2.0時代如何啟用裝飾器語法呢? 我們依舊采用的是react-app-rewired, 通過劫持webpack cofig對象, 達到修改的目的
    2018-10-10
  • 從零開始搭建webpack+react開發(fā)環(huán)境的詳細步驟

    從零開始搭建webpack+react開發(fā)環(huán)境的詳細步驟

    這篇文章主要介紹了從零開始搭建webpack+react開發(fā)環(huán)境的詳細步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • React中Ant?Design組件日期編輯回顯的實現(xiàn)

    React中Ant?Design組件日期編輯回顯的實現(xiàn)

    本文主要介紹了React中Ant?Design組件日期編輯回顯的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • React+EggJs實現(xiàn)斷點續(xù)傳的示例代碼

    React+EggJs實現(xiàn)斷點續(xù)傳的示例代碼

    這篇文章主要介紹了React+EggJs實現(xiàn)斷點續(xù)傳的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • React class和function的區(qū)別小結

    React class和function的區(qū)別小結

    Class組件和Function組件是React中創(chuàng)建組件的兩種主要方式,本文主要介紹了React class和function的區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 用React實現(xiàn)一個類 chatGPT 的交互式問答組件的方法詳解

    用React實現(xiàn)一個類 chatGPT 的交互式問答組件的方法詳解

    這篇文章主要給大家詳細介紹如何用React實現(xiàn)一個類 chatGPT 的交互式問答組件的方法,文中有詳細的代碼示例,對我們學習有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • React?Native?的動態(tài)列表方案探索詳解

    React?Native?的動態(tài)列表方案探索詳解

    這篇文章主要為大家介紹了React?Native?的動態(tài)列表方案探索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論