【Vue3】Vue3 UI 框架 | Element Plus —— 創建并優化表單

安裝

# NPM
$ npm install element-plus --save
// 或者(下載慢切換國內鏡像)
$ npm install element-plus -S
// 可以選擇性安裝 less
npm install less less-loader -D
// 可以選擇性配置 @ 自動聯想src目錄

Element Plus 的引入和注入

main.ts

import { createApp } from 'vue'
import App from './App.vue'
import {router} from './router'
// import 引入
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
const app = createApp(App)
app.use(router)
// use 注入 ElementPlus 插件
app.use(ElementPlus)
app.mount('#app')

在這里插入圖片描述

組件的引入

  1. 先CV一個卡片

Login.vue

<template><div class="login"><el-card class="box-card"><template #header><div class="card-header"><span>Card name</span><el-button class="button" text>Operation button</el-button></div></template><div v-for="o in 4" :key="o" class="text item">{{ 'List item ' + o }}</div></el-card></div>
</template><script setup lang="ts"></script><style scoped lang="less">
.login {height: 100%;display: flex;justify-content: center;align-items: center;
}
</style>

index.ts

import { createRouter, createWebHistory } from 'vue-router'export const router = createRouter({// import.meta.env.BASE_URL 應用的基本 URL。基本 URL 是指在你的應用部署到某個域名或子路徑時,URL 的起始部分。例如,如果你的應用部署在 https://example.com/myapp/ 這個路徑下,那么 import.meta.env.BASE_URL 就會是 /myapp/。history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',component: () => import('@/views/Login.vue'),},{path: '/index',component: () => import('@/views/Index.vue'),},],
})

App.vue

<template><Login></Login>
</template><script setup lang="ts">
import Login from './views/Login.vue'
</script><style>
/* 注意 style 標簽 別加 scoped 不然設置寬高不生效 */
* {margin: 0;padding: 0;
}
html, body, #app {height: 100%;overflow: hidden;
}
</style>

在這里插入圖片描述
2. 改為 Form 表單

Login.vue

<template><div class="login"><el-card class="box-card"><el-form :inline="true" :model="formInline" class="demo-form-inline"><el-form-item label="Approved by"><el-input v-model="formInline.user" placeholder="Approved by" clearable /></el-form-item><el-form-item label="Activity zone"><el-select v-model="formInline.region" placeholder="Activity zone" clearable><el-option label="Zone one" value="shanghai" /><el-option label="Zone two" value="beijing" /></el-select></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">Query</el-button></el-form-item></el-form></el-card></div>
</template><script setup lang="ts">
import { reactive } from 'vue'const formInline = reactive({user: '',region: '',
})const onSubmit = () => {console.log('submit!')
}
</script><style scoped lang="less">
.login {height: 100%;display: flex;justify-content: center;align-items: center;
}
</style>

在這里插入圖片描述
3. 優化表單

Login.vue

<template><div class="login"><el-card class="box-card"><el-form ref="form" :rules="rules" :model="formInline" class="demo-form-inline"><el-form-item prop="user" label="賬號:"><el-input v-model="formInline.user" placeholder="請輸入賬號" /></el-form-item><el-form-item prop="password" label="密碼:"><el-input v-model="formInline.password" placeholder="請輸入密碼" type="password"></el-input></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">登錄</el-button></el-form-item></el-form></el-card></div>
</template><script setup lang="ts">
import { reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import type { FormItemRule, FormInstance } from 'element-plus';
import { ElMessage } from 'element-plus'const router = useRouter()
type Form = {user: string,password: string
}
type  Rules = {[k in keyof Form]?: Array<FormItemRule>
}
const formInline = reactive<Form>({user: '',password: '',
})
const form = ref<FormInstance>()
const rules = reactive({user: [{required: true,message: '請輸入賬號',type: 'string',}],password: [{required: true,message: '請輸入密碼',type: 'string',}]
})const onSubmit = () => {console.log('submit!', form.value)form.value?.validate((validate)=>{if (validate) {router.push('/index')localStorage.setItem('token', '1')} else {ElMessage.error('賬號或密碼錯誤')}})}
</script><style scoped lang="less">
.login {height: 100%;display: flex;justify-content: center;align-items: center;
}
</style>

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決VSCode CPU高占問題的方法

如果你也遇到VSCode的CPU占用過高的問題&#xff0c;可以嘗試使用官方自帶的插件Bisect&#xff08;擴展二分查找&#xff09;功能來查找具體是哪個擴展出了問題。 找到“糟糕”的擴展可能很容易&#xff0c;也可能很困難。 打開擴展視圖 ( CtrlShiftX )&#xff0c;禁用擴展&…

網絡:雜記

1. 完成鏈路認證后&#xff0c;STA會繼續發起鏈路服務協商&#xff0c;具體的協商是通過Association報文實現。 2. RSTP可以提高收斂速度的原因&#xff1a; RSTP的拓撲變化機制 Proposal/Agreement機制 根端口快速切換機制 邊緣端口的引入

git cherry-pick

cherry-pick命令的基本用法 對于多分支的代碼庫&#xff0c;將代碼從一個分支轉移到另一個分支是常見需求。這時分兩種情況。一種情況是&#xff0c;你需要另一個分支的所有代碼變動&#xff0c;那么就采用合并&#xff08; git merge &#xff09;。另一種情況是&#xff0c;…

總結 TCP 協議的相關特性

TCP協議段格式: 如圖, 端口號: 是其中一個重要的部分,知道端口號才能確認數據交給哪個應用程序(端口號屬于傳輸層的概念). 4位首部長度:4bit表示的范圍是0->15,在此處,單位是"4字節",因此,將這里的數值 * 4&#xff0c;才是真正的報頭長度,即TCP 報頭最大長度,60…

Cenos7 搭建Minio最新版集群部署服務器(一)

------> 道 | 法 | 術 | 器 | 勢 <------ 多臺服務器間免密登錄|免密拷貝 Cenos7 搭建Minio集群部署服務器(一) Cenos7 搭建Minio集群Nginx統一訪問入口|反向動態代理(二) Spring Boot 與Minio整合實現文件上傳與下載(三) CentOS7的journalctl日志查看方法 …

已知四個坐標點,怎樣求出四邊形的四個內角

1&#xff0c;理論 最簡單的方式利用向量進行求解 如圖可得&#xff1a; cosθa*b/&#xff08;|a|*|b|&#xff09; 已知三點坐標&#xff0c;很容易可以得到兩向量之積a*b&#xff0c;以及每個的模值 2&#xff0c;四個角度求解過程 首先&#xff0c;我們定義了四個坐標點…

在數字游民天堂,Polkadot Hubs 探索建設更緊密的全球社區

分布式辦公是 Web3 行業的協作常態&#xff0c;當數字游民們享受著線上遠程工作的自由和便捷時&#xff0c;也在懷念著一種面對面與他人交流與共創的經歷。共享空間隨之興起&#xff0c;為許多初創項目公司提供開放舒適的環境&#xff0c;卻難以在不同的人群之間搭起一張巨大的…

系統架構設計師考試大綱(2017年)

1.考試目標 考試合格人員應能夠根據系統需求規格說明書,結合應用領域和技術發展的實際情況,考慮有關約束條件,設計正確、合理的軟件架構,確保系統架構具有良好的特性;能夠對項目系統架構進行描述、分析、設計與評估;能夠按照相關標準編寫相應的設計文檔;能夠與系統分析師…

完美解決Github提交PR后報錯:File is not gofumpt-ed (gofumpt)

問題闡述 最近在Github上提交PR后&#xff0c;遇到了這么一個問題&#xff1a;golangci-lint運行失敗&#xff0c;具體原因是File is not gofumpt-ed (gofumpt)。 名詞解釋 golangci-lint&#xff1a; golangci-lint 是Go語言社區中常用的代碼質量檢查工具&#xff0c;它可以…

react中使用shouldComponentUpdate生命周期函數調用setState引起的無限循環的錯誤

場景&#xff1a; 在 React 組件中&#xff0c;當在 componentWillUpdate 或 componentDidUpdate 生命周期方法中調用 setState 時&#xff0c;會觸發無限循環&#xff0c;導致超過最大更新深度。 錯誤原因 在React組件中 &#xff0c;我們使用componentWillUpdate 或 componen…

Windows 2016安裝Jenkins

Jenkins 下載&#xff0c;安裝 下載OpenJDK 11 for Wndows 兩種方式 choco install openjdk11 https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.20%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.20_8.msi how to enable administrator user to …

[自學記錄06|*百人計劃]Gamma矯正與線性工作流

一、前言 Gamma矯正其實也屬于我前面落下的一塊內容&#xff0c;打算把它補上&#xff0c;其它的沒補是因為我之前寫的GAMES101筆記里已經涵蓋了&#xff0c;而Gamma矯正在101里面確實沒提到&#xff0c;于是打算把它補上&#xff0c;這塊內容并不難&#xff0c;但是想通透的理…

我的創作紀念日(256天)

前言 結緣 我與csdn的結緣&#xff0c;之前在創作紀念日&#xff08;128天&#xff09;便已提到&#xff0c;今在此便不再多言 收獲 很慚愧&#xff0c;自六月底至八月中旬&#xff0c;因為忙于找工作&#xff0c;奔赴面試求職之際&#xff0c;寫博客沒有像之前那么勤&#x…

qt QPalette的原理與使用

QPalette類用于控制控件的風格&#xff0c;即任意一個地方的繪制方式。每個控件或者說qwidget對象內部都有一個QPalette對象。 在paintEvent(QPaintEvent *event)函數中&#xff0c;其實就是調用該控件的QPalette內容來進行繪制的了。 例如&#xff1a; QStyleOptionTab opt…

《論文閱讀12》RandLA-Net: Ef?cient Semantic Segmentation of Large-Scale Point Clouds

一、論文 研究領域&#xff1a;全監督3D語義分割&#xff08;室內&#xff0c;室外RGB&#xff0c;kitti&#xff09;論文&#xff1a;RandLA-Net: Ef?cient Semantic Segmentation of Large-Scale Point Clouds CVPR 2020 牛津大學、中山大學、國防科技大學 論文鏈接論文gi…

Kafka-eagle監控平臺

Kafka-Eagle簡介 在開發工作中&#xff0c;當業務不復雜時&#xff0c;可以使用Kafka命令來進行一些集群的管理工作。但如果業務變得復雜&#xff0c;例如&#xff1a;需要增加group、topic分區&#xff0c;此時&#xff0c;再使用命令行就感覺很不方便&#xff0c;此時&#x…

Vim學習(二)—— 編譯C程序

打開終端&#xff0c;這里以MobaXterm為例&#xff0c; 郵件創建新的空文件并命名&#xff0c; 然后cd到對應路徑下&#xff0c;用 vim hello.cvim打開創建的文件&#xff0c;進入編輯模式&#xff0c;編輯完程序后按Esc退出編輯模式&#xff0c;輸入 :wq保存并退出&#xf…

linux安裝wkhtmltopdf(清晰明了)

概述 在公司項目中使用到 wkhtmltopdf 轉換PDF&#xff0c;由于 wkhtmltox-0.12.5 版本 echarts 圖形虛線樣式&#xff0c;需要升級 wkhtmltox-0.12.6 版本來解決。 官網地址 wkhtmltopdf &#xff1a;https://wkhtmltopdf.org/ windows 安裝 下載流程及安裝流程 進入官…

C++ 關鍵字override,final的作用

文章目錄 一、為什么要引入這兩個關鍵字?1.虛函數復寫2. 類繼承 二、override三、final C11引入這兩個關鍵字 一、為什么要引入這兩個關鍵字? 1.虛函數復寫 不能阻止某個虛函數進一步重寫 本意寫一個新函數&#xff0c;錯誤重寫基類虛函數(子類中 virtual 關鍵字可省略) 本…

《系統架構設計師教程》重點章節思維導圖

內容來自《系統架構設計師教程》&#xff0c;篩選系統架構設計師考試中分值重點分布的章節&#xff0c;根據章節的內容整理出相關思維導圖。 重點章節 第2章&#xff1a;計算機系統知識第5章&#xff1a;軟件工程基礎知識第7章&#xff1a;系統架構設計基礎知識第8章&#xff1…