关于javascript:reactrouter官网demo解析2URL参数

源码:
example.js

import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link,
  useParams
} from "react-router-dom";

export default function ParamsExample() {
  return (
    <Router>
      <div>
        <h2>Accounts</h2>

        <ul>
          <li>
            <Link to="/netflix">Netflix</Link>
          </li>
          <li>
            <Link to="/zillow-group">Zillow Group</Link>
          </li>
          <li>
            <Link to="/yahoo">Yahoo</Link>
          </li>
          <li>
            <Link to="/modus-create">Modus Create</Link>
          </li>
        </ul>

        <Switch>
          <Route path="/:id" children={<Child />} />
        </Switch>
      </div>
    </Router>
  );
}

function Child() {
  let { id } = useParams();
  return (
    <div>
      <h3>ID: {id}</h3>
    </div>
  );
}

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './example';

ReactDOM.render(
<App />,
document.getElementById('root')
);

index.html

<div id="root"></div>

效果图:

相干常识:
path=”/:id”: 示意匹配的门路为 / ,冒号示意门路前面所带的参数,即 / 前面的内容作为id的值。

useParams(): 返回一个key-value组成的对象,对象里是以后匹配到的路由的参数。这个例子中内容就是key为id,value为对应的值netflix,zillow-group,yahoo或者modus-create中的一个。

例如:此时门路为/zillow-group/si,则id = zillow-group。
useParams()为{id: zillow-group}。 即只会匹配到 / 后到第一个门路分支。 /si不会作为参数传到id。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理