首頁 > web前端 > js教程 > 主體

如何在 React Router v6 中的元件之外導航?

Barbara Streisand
發布: 2024-11-04 11:43:01
原創
458 人瀏覽過

How to Navigate Outside of Components in React Router v6?

React Router v6:在元件外部導覽

React Router v6 引入了處理歷史物件方式的變化。在 v5 中,您可以建立一個共享歷史物件並將其傳遞給 Router,v6 需要不同的方法。

問題:

如何從外部導航React Router v6 中的元件,與 v5 中的行為類似?

解決方案:

要複製先前的行為,您可以建立一個實例化歷史狀態的自訂路由器如RRDv6 路由器中所做的那樣:

<code class="javascript">const CustomRouter = ({ history, ...props }) => {
  const [state, setState] = useState({
    action: history.action,
    location: history.location
  });

  useLayoutEffect(() => history.listen(setState), [history]);

  return (
    <Router
      {...props}
      location={state.location}
      navigationType={state.action}
      navigator={history}
    />
  );
};</code>
登入後複製

在您的應用程式中包含此自訂路由器並傳遞您的自訂歷史物件:

<code class="javascript">export default function App() {
  return (
    <CustomRouter history={history}>
      <div className="App">
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/profile" element={<Profile />} />
        </Routes>
      </div>
    </CustomRouter>
  );
}</code>
登入後複製

更新:

更新:
<code class="javascript">import { unstable_HistoryRouter as HistoryRouter } from "react-router-dom";
import { createBrowserHistory } from "history";

const history = createBrowserHistory({ window });

ReactDOM.render(
  <HistoryRouter history={history}>
    {/* The rest of your app goes here */}
  </HistoryRouter>,
  root
);</code>
登入後複製

React Router v6 提供了一個歷史記錄路由器,讓您可以傳遞自訂歷史記錄實例:

RRDv6.4 的註解:
<code class="javascript">import { createBrowserRouter } from 'react-router-dom';

const router = createBrowserRouter(...);

...

router.navigate(targetPath, options);</code>
登入後複製
對於RRDv6.4和資料路由器,使用路由器導航功能在元件外部導航:

以上是如何在 React Router v6 中的元件之外導航?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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