首頁 > web前端 > js教程 > 如何在沒有 Mixins 的情況下以程式設計方式在 React Router 中導航?

如何在沒有 Mixins 的情況下以程式設計方式在 React Router 中導航?

Linda Hamilton
發布: 2024-12-19 21:16:09
原創
843 人瀏覽過

How to Programmatically Navigate in React Router without Mixins?

在沒有Mixins 的React Router 中進行程式設計導航

React Router 可以在上下文中實現無縫導航,但理解其用法可能會令人困惑。讓我們探索如何在不使用 mixins 的情況下以程式設計方式導覽。

React Router 透過上下文提供歷史對象,提供對推送和替換方法的存取以進行操作。然而,隨著 React 的進步,您有多種程式導航選項:

1。利用 withRouter HOC(不支援 React Router 6):

withRouter HOC 將歷史物件注入到元件 props 中,因此可以直接存取導航方法。

import { withRouter } from 'react-router-dom';

const Button = withRouter(({ history }) => {
  const handleClick = () => { history.push('/new-location'); };
  return <button onClick={handleClick}>Click Me!</button>;
});
登入後複製

2.渲染無路徑路由(不支援React Router 6):

渲染沒有路徑的Route 元件,它將始終匹配當前位置並傳遞歷史屬性。

import { Route } from 'react-router-dom';

const Button = () => {
  return (
    <Route render={({ history }) => {
      const handleClick = () => { history.push('/new-location'); };
      return <button onClick={handleClick}>Click Me!</button>;
    }} />
  );
};
登入後複製

3。使用上下文(複雜且已棄用):

此方法需要深入了解 React 的上下文,應謹慎使用。您需要定義一個元件上下文類型來存取歷史記錄屬性。

import React from 'react';

const Button = (props, context) => {
  const handleClick = () => { context.history.push('/new-location'); };
  return <button onClick={handleClick}>Click Me!</button>;
};

Button.contextTypes = {
  history: React.PropTypes.shape({
    push: React.PropTypes.func.isRequired
  })
};
登入後複製

對於大多數場景,選項 1 和 2 很簡單,建議使用。

以上是如何在沒有 Mixins 的情況下以程式設計方式在 React Router 中導航?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板