umi(3.0.5)版本之二 約定式路由

看一下umi的官網,你會發現約定路由的規則改了。
動態路由
約定 [] 包裹的文件或文件夾爲動態路由。

比如:

src/pages/users/[id].tsx 會成爲 /users/:id
src/pages/users/[id]/settings.tsx 會成爲 /users/:id/settings
舉個完整的例子,比如以下文件結構,

.
  └── pages
    └── [post]
      ├── index.tsx
      └── comments.tsx
    └── users
      └── [id].tsx
    └── index.tsx

之前是要在文件或文件夾前面加$,現在改成[]包裹的文件或文件夾

需要注意的是,滿足以下任意規則的文件不會被註冊爲路由,

以 . 或 _ 開頭的文件或目錄
以 d.ts 結尾的類型定義文件
以 test.ts、spec.ts、e2e.ts 結尾的測試文件(適用於 .js、.jsx 和 .tsx 文件)
components 和 component 目錄
utils 和 util 目錄
不是 .js、.jsx、.ts 或 .tsx 文件
文件內容不包含 JSX 元素

等我按照規則建好文件後,發現動態路由沒起作用。因爲我忽略了這麼一句話。
如果沒有 routes 配置,Umi 會進入約定式路由模式,然後分析 src/pages 目錄拿到路由配置。
這個routes配置在.umirc.ts文件裏
.umirc.ts

import { defineConfig } from 'umi';

export default defineConfig({
  routes: [{ path: '/', component: '@/pages/index' }],
});

它默認幫你配置了 routes,所以你得把routes: [{ path: ‘/’, component: ‘@/pages/index’ }]這行代碼刪掉,最後發現約定式路由起作用了^^
(說到umi的路由我就很氣,因爲之前我一直看的是umi2版本,但是我建的項目是3版本的,所以裏面的約定路由死活弄不對,最後終於搞好了。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章