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

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

Linda Hamilton
Linda Hamilton原創
2024-12-19 21:16:09821瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn