国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Umi3 創(chuàng)建,配置環(huán)境,路由傳參(代碼示例)

這篇具有很好參考價(jià)值的文章主要介紹了Umi3 創(chuàng)建,配置環(huán)境,路由傳參(代碼示例)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

創(chuàng)建項(xiàng)目

配置環(huán)境

創(chuàng)建腳手架

項(xiàng)目結(jié)構(gòu)及其目錄、

路由

配置路由

嵌套路由

編程式導(dǎo)航和聲明式導(dǎo)航

聲明式導(dǎo)航

編程式導(dǎo)航

約定式路由

路由傳參

query傳參(問(wèn)號(hào))

接收參數(shù)

params傳參(動(dòng)態(tài)傳參)

接收參數(shù)


創(chuàng)建項(xiàng)目

配置環(huán)境

首先得有 node,并確保 node 版本是 10.13 或以上。(18版本可能會(huì)不適配)

$ node -v  //查看版本
v16.20.2

如果出現(xiàn)版本錯(cuò)誤,可以使用nvm進(jìn)行node版本管理https://blog.csdn.net/kkkys_kkk/article/details/135071784?spm=1001.2014.3001.5501

推薦使用 yarn 管理 npm 依賴(lài),并使用國(guó)內(nèi)源(阿里用戶(hù)使用內(nèi)網(wǎng)源)。

# 國(guó)內(nèi)源
$ npm i yarn tyarn -g
# 后面文檔里的 yarn 換成 tyarn
$ tyarn -v

# 阿里內(nèi)網(wǎng)源
$ tnpm i yarn @ali/yarn -g
# 后面文檔里的 yarn 換成 ayarn
$ ayarn -v

創(chuàng)建腳手架

?創(chuàng)建項(xiàng)目文件夾

$ mkdir myapp && cd myapp

通過(guò)官方工具創(chuàng)建項(xiàng)目,

$ yarn create @umijs/umi-app
# 或 npx @umijs/create-umi-app

Copy:  .editorconfig
Write: .gitignore
Copy:  .prettierignore
Copy:  .prettierrc
Write: .umirc.ts
Copy:  mock/.gitkeep
Write: package.json
Copy:  README.md
Copy:  src/pages/index.less
Copy:  src/pages/index.tsx
Copy:  tsconfig.json
Copy:  typings.d.ts

安裝依賴(lài)

$ yarn
或者
$ npm i

啟動(dòng)項(xiàng)目

$ yarn start
或者
$ npm start

在瀏覽器里打開(kāi) http://localhost:8000/,能看到以下界面

Umi3 創(chuàng)建,配置環(huán)境,路由傳參(代碼示例),javascript,typescript,react.js,前端框架,webpack

項(xiàng)目結(jié)構(gòu)及其目錄、


├── package.json   項(xiàng)目基本信息 、依賴(lài)信息
├── tsconfig.json  ts的配置文件
├── typings.d.ts   ts的類(lèi)型聲明文件(凡是以xxx.d.ts結(jié)尾的文件都是咱們的ts類(lèi)型聲明文件)
├── .umirc.ts      核心配置文件
├── .env           環(huán)境參數(shù)文件
├── mock           mock數(shù)據(jù)
├── src
		├── .umi       編譯后自動(dòng)生成的文件,不需要?jiǎng)?		├── pages               業(yè)務(wù)組件文件夾(頁(yè)面)
		├── index.less
		└── index.tsx       業(yè)務(wù)組件

路由

umi的路由分為配置路由與約定路由

配置路由

在`pages`中新建一個(gè)頁(yè)面

export default function Home() {
  return (
  <div>Home</div>
  )
}

在.umirc.ts中的routes配置項(xiàng)中新增路由配置

import { defineConfig } from 'umi';
export default defineConfig({
  nodeModulesTransform: {
  	type: 'none',
  },
  routes: [
  	{
      path: '/home',
      component: '@/pages/Home'
    },
    {
      path: '/course',
      component: '@/pages/Course'
    }
  ],
  fastRefresh: {},
});

umi官方推薦我們使用config方法

在項(xiàng)目文件下創(chuàng)建config文件夾,復(fù)制umirc.ts內(nèi)容,同時(shí)刪除umirc.ts文件,因?yàn)閡mirc.ts的權(quán)重高

Umi3 創(chuàng)建,配置環(huán)境,路由傳參(代碼示例),javascript,typescript,react.js,前端框架,webpack

創(chuàng)建config文件,粘貼umirc.ts,將routes作為文件導(dǎo)入引入

import { defineConfig } from 'umi';
import routes from './router/index';

export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  
  fastRefresh: {},
  routes
});

創(chuàng)建路由文件,聲明路由,導(dǎo)出

const routes=[
  	{
      path: '/home',
      component: '@/pages/Home'
    },
    {
      path: '/course',
      component: '@/pages/Course'
    }
  ],
export default routes
嵌套路由

嵌套路由是通過(guò)`routes`屬性來(lái)實(shí)現(xiàn)的

 const routes=[

{
        path:'/index',
        component:'@/pages/Base/Base',
        routes:[
            {
                path:'one',
                component:'@/pages/One/One'
            },
            {path:'two',component:'@/pages/Two/Two'},
            {path:'three',component:'@/pages/Three/Three'},
        ]
    },
]

然后在組件中通過(guò)props.children來(lái)渲染子路由

import React from 'react';
import styles from './index.less';

export default (props:any) => {
  return (
    <div className={ styles['container'] }>
      { props.children }
    </div>
  )
}
編程式導(dǎo)航和聲明式導(dǎo)航
聲明式導(dǎo)航
import React from 'react';
import styles from './index.less';
import { NavLink } from 'umi';

// 通過(guò)接口定義props類(lèi)型
interface Props {
  children: React.ReactNode
}
// 在umijs中,Props類(lèi)型的定義一般會(huì)用到React.FC類(lèi)型,F(xiàn)unctionComponent類(lèi)型
// 在React.FC類(lèi)型中,Props類(lèi)型是一個(gè)泛型,用來(lái)定義組件所接收的Props類(lèi)型
const Course:React.FC<Props> = (props) => {
  return (
    <div className={ styles['container'] }>
      {/* v5版本的路由是一樣的 */}
      <NavLink to="/course" activeClassName="active">去課程</NavLink>
      Course <br />
      { props.children }
    </div>
  )
}

export default Course;
編程式導(dǎo)航

編程式導(dǎo)航是通過(guò): history.push 方法來(lái)實(shí)現(xiàn)的

import styles  from './index.less';
import { NavLink, history } from 'umi';

export default function Home() {
  return (
    <div className={ styles['container'] }>
      Pages Home
      {/* 聲明式導(dǎo)航 */}
      <NavLink to="/course" activeClassName="active">去課程</NavLink>
      {/* 編程式導(dǎo)航 */}
      <button onClick={ () => history.push('/course') }>去課程</button>
    </div>
  )
}

約定式路由

如果沒(méi)有routes 配置 , Umi 會(huì)進(jìn)入約定式路由模式, 然后分析src/pages 目錄拿到路由配置。 比如以下文件結(jié)構(gòu):

└── pages
	├── index.tsx
  └── users.tsx

會(huì)得到以下路由配置

[
  { exact: true, path: '/', component: '@/pages/index' },
	{ exact: true, path: '/users', component: '@/pages/users' }
]

路由傳參

query傳參(問(wèn)號(hào))

寫(xiě)入路徑中

history.push('/list?id=1');

以對(duì)象形式

history.push({
  pathname: '/list',
  query: {
    name: 'b',
  },
});
接收參數(shù)

使用history方法

import {history } from 'umi'

生成變量接收參數(shù)

 const id =history.location.search.split('=')[1]

?或者使用useLocation函數(shù),返回表示當(dāng)前 URL 的對(duì)象。您可以將其視為每當(dāng) URL 更改時(shí)返回新位置。

import { useLocation } from 'umi';

export default () => {
  const location = useLocation();
  return (
    <div>
      <ul>
        <li>location: {location.pathname}</li>
      </ul>
    </div>
  );
};
params傳參(動(dòng)態(tài)傳參)

路由表配置改為動(dòng)態(tài)

  {
        path:'/anthor/:id',
        component:'@/pages/detail/Id'
    },
    

同樣使用history方法

  <button onClick={()=>{history.push('/anthor/1')}}>click me</button>

將需要傳遞的參數(shù)直接寫(xiě)入路徑當(dāng)中

接收參數(shù)

useParams返回 URL 參數(shù)的鍵/值對(duì)的對(duì)象。使用它來(lái)訪(fǎng)問(wèn)當(dāng)前路由

import { useParams } from 'umi';

export default () => {
  const params = useParams();
  return (
    <div>
      <ul>
        <li>params: {JSON.stringify(params)}</li>
      </ul>
    </div>
  );
};

返回的是包含數(shù)據(jù)信息的對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803163.html

到了這里,關(guān)于Umi3 創(chuàng)建,配置環(huán)境,路由傳參(代碼示例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • umi 中的路由切換動(dòng)畫(huà)如何實(shí)現(xiàn)

    umi 中的路由切換動(dòng)畫(huà)如何實(shí)現(xiàn)

    提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 環(huán)境準(zhǔn)備 1.1 在src文件目錄下創(chuàng)建一個(gè) layouts文件夾,在文件夾里創(chuàng)建兩個(gè)文件。 1.2 在index.tsx文件中復(fù)制如下代碼: 1.3 在index.less文件中復(fù)制如下代碼: 1.4 .umirc.ts文件中的配置 要讓layouts文件作為一級(jí)

    2024年02月09日
    瀏覽(24)
  • Vagrant創(chuàng)建Oracle RAC環(huán)境示例

    Vagrant創(chuàng)建Oracle RAC環(huán)境示例

    利用Vagrant安裝Oracle RAC(默認(rèn)為non-CDB模式),生成2臺(tái)虛機(jī),耗時(shí)約 1小時(shí) 。 可以看到vagrant生成了node1和node2兩臺(tái)虛機(jī): 兩臺(tái)虛機(jī)啟動(dòng)后,32G的電腦內(nèi)存占用由29%升至69%,消耗內(nèi)存約 13G 。 空間方面,兩臺(tái)虛機(jī)剛生成時(shí),新增空間占用為vagrant目錄下的113G(共享存儲(chǔ))加虛機(jī)目

    2024年01月21日
    瀏覽(24)
  • 配置策略路由(基于IP地址)示例

    配置策略路由(基于IP地址)示例

    定義 策略路由PBR(Policy-Based Routing)是一種依據(jù)用戶(hù)制定的策略進(jìn)行路由選擇的機(jī)制,其優(yōu)先級(jí)高于直連路由、靜態(tài)路由和通過(guò)動(dòng)態(tài)路由協(xié)議生成的路由。設(shè)備配置策略路由后,若接收的報(bào)文(包括二層報(bào)文)匹配策略路由的規(guī)則,則按照規(guī)則轉(zhuǎn)發(fā);若匹配失敗,則根據(jù)目的

    2024年02月04日
    瀏覽(22)
  • redis哈希分桶路由介紹及代碼示例

    先舉例來(lái)解釋哈希表在 Redis 中的應(yīng)用: 假設(shè)我們有一個(gè)存儲(chǔ)用戶(hù)信息的場(chǎng)景,我們想要存儲(chǔ)每個(gè)用戶(hù)的姓名、年齡和電子郵箱地址。在傳統(tǒng)的鍵值對(duì)方式中,我們可能會(huì)這樣存儲(chǔ): 這種方式下,每個(gè)用戶(hù)的信息都需要使用不同的鍵來(lái)存儲(chǔ),不夠直觀(guān),也不易于管理。而使用

    2024年04月12日
    瀏覽(16)
  • 從創(chuàng)建文件開(kāi)始,使用git clone方式把代碼上傳到服務(wù)器上,并配置好環(huán)境(Pycharm遠(yuǎn)程連接服務(wù)器來(lái)跑代碼第二種方式)

    從創(chuàng)建文件開(kāi)始,使用git clone方式把代碼上傳到服務(wù)器上,并配置好環(huán)境(Pycharm遠(yuǎn)程連接服務(wù)器來(lái)跑代碼第二種方式)

    本文是在這篇[關(guān)于git clone http://xxxxxxxxxxx報(bào)錯(cuò)的問(wèn)題]基礎(chǔ)上,擴(kuò)展把代碼放到服務(wù)器上運(yùn)行 想知道為什么使用git clone報(bào)錯(cuò)的同學(xué)可以去瞅瞅 以下工作都是建立在創(chuàng)建好虛擬環(huán)境的基礎(chǔ)上 創(chuàng)建虛擬環(huán)境直接使用 具體文章以前也寫(xiě)過(guò)了點(diǎn)我傳送 首先要準(zhǔn)備一個(gè)文件夾,專(zhuān)門(mén)用

    2024年02月03日
    瀏覽(27)
  • RIP路由協(xié)議簡(jiǎn)介+基本配置示例

    RIP路由協(xié)議簡(jiǎn)介+基本配置示例

    ? ? ? ? RIP(Routing Information Protocol)-路由信息協(xié)議: 是一種基于距離矢量(Distance Vector)算法的協(xié)議,以跳數(shù)(被傳送數(shù)據(jù)所經(jīng)過(guò)路由器的個(gè)數(shù))為度量來(lái)衡量到達(dá)目標(biāo)網(wǎng)絡(luò)的距離,屬于IGP(內(nèi)部網(wǎng)關(guān)協(xié)議)協(xié)議,有RIP1和RIP2兩個(gè)版本,基于UDP協(xié)議,端口號(hào)為520,主要用于

    2024年02月15日
    瀏覽(17)
  • react--umi, 根據(jù)權(quán)限展示菜單,完成頁(yè)面權(quán)限分配,以及路由鑒權(quán)

    ? ? ? ?umi框架,prolayout布局,access設(shè)置菜單權(quán)限,initialState全局初始化數(shù)據(jù),配合使用,根據(jù)后端返回的權(quán)限信息,完成菜單的不同的權(quán)限的不同展示。 ? ? 1. umi 配合 patlayout 布局, 實(shí)現(xiàn)根據(jù)配置的路由展示菜單欄 ? ? 2. umi 的 access 插件,設(shè)置不同權(quán)限的菜單展示 ? ?

    2024年02月06日
    瀏覽(23)
  • ant design pro + umi4的動(dòng)態(tài)菜單與動(dòng)態(tài)路由

    ant design pro + umi4的動(dòng)態(tài)菜單與動(dòng)態(tài)路由

    困擾我好多天的自定義菜單及路由終于完成了,首先雖然看似為一個(gè)功能,但在umi4中是兩項(xiàng)配置。 先說(shuō)說(shuō)我浪費(fèi)了大量時(shí)間使用的處理方式:因?yàn)樵?jīng)的項(xiàng)目是umi3的,所以我就想原樣搬過(guò)來(lái),結(jié)果發(fā)現(xiàn),布局頁(yè)BasicLayout的子children不見(jiàn)了! ? ? 如果這個(gè)子路由能正常顯示,

    2024年02月11日
    瀏覽(21)
  • umi 如何使用 proxy 代理解決 開(kāi)發(fā)環(huán)境跨域 問(wèn)題

    umi 如何使用 proxy 代理解決 開(kāi)發(fā)環(huán)境跨域 問(wèn)題

    由于瀏覽器的同源策略限制,當(dāng)一個(gè)請(qǐng)求 URL 的協(xié)議、域名、端口和當(dāng)前頁(yè)面 URL 任意一個(gè)不一致時(shí)都會(huì)出現(xiàn)跨域錯(cuò)誤。 eg: 用 node run了一個(gè) http://localhost:8080 的服務(wù),在這個(gè)服務(wù)器下訪(fǎng)問(wèn)的網(wǎng)頁(yè)也默認(rèn)在 http://localhost:8080 這個(gè)域下面; 假設(shè)服務(wù)端所在的域是 http://example.com 這

    2024年02月09日
    瀏覽(14)
  • 使用Flask Web創(chuàng)建一個(gè)調(diào)用ChatGPT API的網(wǎng)頁(yè)--簡(jiǎn)單示例(linux環(huán)境下)

    前提:你應(yīng)該要有一個(gè)能正常使用chatGPT的openAI賬號(hào);即你已經(jīng)成功注冊(cè)了chatGPT,并能正常使用。 下面是一個(gè)使用Flask Web框架創(chuàng)建調(diào)用ChatGPT API的網(wǎng)頁(yè)的示例代碼和工程結(jié)構(gòu): 具體的工程,你可以選擇自己創(chuàng)建,也可以直接下載我創(chuàng)建好的工程,鏈接如下: https://download.csd

    2024年02月13日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包