在React Router中带参数的嵌套路由。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在React Router中带参数的嵌套路由。相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我有一个路由的小问题。我得到了组件 播放列表 我选择我要播放的播放列表,点击特定的播放列表后,组件就会出现在我面前。玩家 已加载。路径到 播放列表 看起来是这样的。

/playlists/toplists?name=Top%20Lists

我想得到的路径是: 玩家 这样的。

/playlists/toplists?name=Top%20Lists/player/r63yd?title=Today%27s%20Top%20Hits

这是因为我想需要从回来 玩家播放列表即使有人只是粘贴链接到 玩家 进入浏览器。我的播放列表路由看起来是这样的。

<Route path="/playlists/:name" component=Playlists /> />

我不知道该怎么做,才能让路由从 玩家播放列表 与路径参数。

答案

你可以应用这样的东西。

import React,  useState, useEffect  from "react";
import  NavLink, BrowserRouter, Route  from "react-router-dom";

const Playlists = ( location, history ) => 
  // somehow get some params
  const data = ["zero", "one", "two", "three", "four", "five"];

  const buttonHandler = (i) => 
    history.push(`$location.pathname/$i?param=$data[i]`);
  ;

  return (
    <div>
        <h3>Playlists</h3>
        [...Array(5)].map((_, i) => (
            <button key=i onClick=() => buttonHandler(i)>
                i
            </button>
        ))
     </div>
    );
  ;

const Player = ( location, match ) => 
  const query = new URLSearchParams(location.search);

  return (
    <div>
        <h3>Player</h3>
        <p>my id is: match.params.id</p>
        <p>my param from URL is: query.get("param")</p>
    </div>
  );
;

function App() 
  return (
    <BrowserRouter>
        <NavLink to="/playlists">Playlists</NavLink>
        <Route exact path="/playlists" component=Playlists />
        <Route path="/playlists/:id" component=Player />
    </BrowserRouter>
  );


export default App;

以上是关于在React Router中带参数的嵌套路由。的主要内容,如果未能解决你的问题,请参考以下文章

ReactSPA - 路由机制 - react-router-dom - 基本路由 - 嵌套路由 - 传递参数 - 路由跳转

react-router v6新特性

在 react-router 中找不到嵌套路由的字体

React中的路由react-router

react-router-relay 中的嵌套路由

在 React-Router-Dom 中声明嵌套路由的方式