React Router學(xué)習(xí)筆記

容易忘記的騷操作

組件懶加載(動態(tài)引入組件)

需要用到babel的動態(tài)引入插件@babel/plugin-syntax-dynamic-import承二,安裝之后蓄喇,webpack配置如下:

{
  "presets": ["@babel/preset-react"],
  "plugins": ["@babel/plugin-syntax-dynamic-import"]
}

然后安裝@loadable/component附较,example:

import loadable from "@loadable/component";
import Loading from "./Loading.js";

const LoadableComponent = loadable(() => import("./Dashboard.js"), {
  fallback: <Loading />
});

export default class LoadableDashboard extends React.Component {
  render() {
    return <LoadableComponent />;
  }
}

loadable-component官網(wǎng)

匹配路由

useRouteMatch

// 注意用這種的話不能放在方法里面,只能放在FC里面
import { useRouteMatch } from "react-router-dom";

function BlogPost() {
  let match = useRouteMatch("/blog/:slug");

  // Do whatever you want with the match...
  return <div />;
}

matchPath

import { matchPath } from "react-router";

const match = matchPath("/users/123", {
  path: "/users/:id",
  exact: true,
  strict: false
});

<Prompt>

用于組件銷毀時觸發(fā)提醒智听,如:

<Prompt
  when={formIsHalfFilledOut}
  message="Are you sure you want to leave?"
/>

但是實(shí)際使用貌似只有離開當(dāng)前頁面到其他頁面會觸發(fā)恩敌,關(guān)閉頁面并不會提示,關(guān)閉頁面的提示需要如下操作

window.onbeforeunload = () => {
  return '你想提示的信息'
}

也可以加上是否需要顯示的判斷

window.onbeforeunload = () => {
  if (needRemind) {
    return '你想提示的信息'
  }
}

<Redirect>

如果在<Switch>中使用<Redirect>
from屬性乔外,可以將from中所帶的參數(shù)床三,匹配傳入to中

如果不在<Switch>中,則可以自定義一個組件來帶參重定向(暫時沒發(fā)現(xiàn)其他方法杨幼,有好辦法的還請不吝賜教)

import React from 'react'
import { Redirect, useParams, generatePath } from 'react-router'

interface Props {
  to: string
}

const RedirectWithParam: React.FC<Props> = (props: Props) => {
  let { to } = props

  const params = useParams<{ [key: string]: string }>()
  to = generatePath(to, params)

  return <Redirect to={to} />
}

export default React.memo(RedirectWithParam)

如何通配路由

大部分場景應(yīng)用于路由匹配不上的情況撇簿,跳轉(zhuǎn)404或者主頁。
react-router-config時差购,由于沒有通配符*了四瘫,可以將router.js/router.ts 改為router.jsx/router.tsx后,直接在path: '/'規(guī)則最后添加一條欲逃,代碼如下找蜜。

{
    path: '/',
    component: Layout,
    routes: [
      ...
      {
        render: () => <Redirect to="404頁面路由" />,
      },
    ],
  },

直接使用<Switch><Route>時,直接在最后面添加一條<Route>即可稳析。

<Switch>
  <Route path="/homepage" component={Homepage} />
  <Route path="/subpage" component={Subpage} />
  <Route component={404Page} />
</Switch>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洗做,一起剝皮案震驚了整個濱河市弓叛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诚纸,老刑警劉巖邪码,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咬清,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奴潘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門旧烧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人画髓,你說我怎么就攤上這事掘剪。” “怎么了奈虾?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵夺谁,是天一觀的道長。 經(jīng)常有香客問我肉微,道長匾鸥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任碉纳,我火速辦了婚禮勿负,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劳曹。我一直安慰自己奴愉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布铁孵。 她就那樣靜靜地躺著锭硼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜕劝。 梳的紋絲不亂的頭發(fā)上檀头,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音熙宇,去河邊找鬼鳖擒。 笑死,一個胖子當(dāng)著我的面吹牛烫止,可吹牛的內(nèi)容都是我干的蒋荚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼馆蠕,長吁一口氣:“原來是場噩夢啊……” “哼期升!你這毒婦竟也來了惊奇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤播赁,失蹤者是張志新(化名)和其女友劉穎颂郎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體容为,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乓序,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坎背。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片替劈。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖得滤,靈堂內(nèi)的尸體忽然破棺而出陨献,到底是詐尸還是另有隱情吕粹,我是刑警寧澤慕趴,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站画株,受9級特大地震影響沮协,放射性物質(zhì)發(fā)生泄漏龄捡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一慷暂、第九天 我趴在偏房一處隱蔽的房頂上張望墅茉。 院中可真熱鬧,春花似錦呜呐、人聲如沸就斤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洋机。三九已至,卻和暖如春洋魂,著一層夾襖步出監(jiān)牢的瞬間绷旗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工副砍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衔肢,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓豁翎,卻偏偏與公主長得像角骤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子心剥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容