Vue 3 動(dòng)態(tài) ref 的使用方式以表格為列
Vue 3 動(dòng)態(tài) ref 的使用方式(表格)
一、問題描述
先給大家簡單介紹一下問題背景。我正在開發(fā)的項(xiàng)目中,有一個(gè)表格組件,其中一列是分鏡描述,需要支持視頻上傳功能。用戶可以為每一行的分鏡描述上傳對(duì)應(yīng)的視頻示例。然而,在實(shí)現(xiàn)過程中,出現(xiàn)了一個(gè)嚴(yán)重的問題:當(dāng)表格有多行數(shù)據(jù)時(shí),點(diǎn)擊某一行的本地上傳按鈕,選擇文件后,數(shù)據(jù)卻總是跑到最后一行。這顯然不符合預(yù)期,嚴(yán)重影響了用戶體驗(yàn)和功能的正確性。
二、解決
1、創(chuàng)建了一個(gè)inputRefs對(duì)象
來存儲(chǔ)input
元素的引用:
const shotVideInputRefs = ref<Record<string, HTMLInputElement>>({});
2、在模板中,通過以下方式綁定ref
:
<input :key="row.id" :ref="(el) => (shotVideInputRefs[row.id] = el as HTMLInputElement)" type="file" @change="handleShotFileChange(row, $event)" />
3、觸發(fā)文件上傳對(duì)話框的方法:根據(jù)當(dāng)前行的id
來獲取對(duì)應(yīng)的input
引用并觸發(fā)點(diǎn)擊事件:
const triggerShotVideoInput = (rowId) => { if (shotVideInputRefs.value[rowId]) { shotVideInputRefs.value[rowId].click(); } };
擴(kuò)展:vue Router(v3.x) 路由傳參的三種方式場景分析
推薦閱讀:
vue Router(v3.x) 路由傳參的三種方式場景分析
vue Router(v3.x) 路由傳參的三種方式
vue 路由傳參的使用場景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時(shí),攜帶參數(shù)跳轉(zhuǎn)。傳參方式可劃分為 params 傳參和 query 傳參,而 params 傳參又可分為在 url 中顯示參數(shù)和不顯示參數(shù)兩種方式,這就是vue路由傳參的三種方式。
當(dāng)然 ,這三種傳參方式只是針對(duì)vue Router V3版本的,V4版本的路由傳參會(huì)有些不同;V3版本經(jīng)常與vue2相配合使用;而V4版本則多和vue3配合使用;
一,params 傳參(顯示參數(shù))
這種方式vue router官網(wǎng)也叫 動(dòng)態(tài)路由匹配;
1,,首先需要在路由表中配置 冒號(hào)+參數(shù)(/user/:id
)
// 這是動(dòng)態(tài)路由 加上:/:id { path: "/routers/:id", name: "Routers", meta: { title: "動(dòng)態(tài)路由" }, component: () => import("../views/routers/routers.vue") },
2,開始跳轉(zhuǎn)并傳參
jumpTo() { this.$router.push({ path: "/routers/123" }); }
3,獲取動(dòng)態(tài)路由參數(shù)
created(){ console.log('獲取', this.$route.params); //{id: '123'} }
當(dāng)然,你也可以傳多個(gè)參數(shù),只不過需要在路由表中配置多個(gè),如下:
注意
: 響應(yīng)路由參數(shù)的變化
注意:當(dāng)使用路由參數(shù)時(shí),例如從 /user/foo 導(dǎo)航到 /user/bar,原來的組件實(shí)例會(huì)被復(fù)用。因?yàn)閮蓚€(gè)路由都渲染同個(gè)組件,比起銷毀再創(chuàng)建,復(fù)用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會(huì)再被調(diào)用。
復(fù)用組件時(shí),想對(duì)路由參數(shù)的變化作出響應(yīng)的話,你可以簡單地 watch (監(jiān)測(cè)變化) $route 對(duì)象:
const User = { template: '...', watch: { $route(to, from) { // 對(duì)路由變化作出響應(yīng)... } } }
或者使用 2.2 中引入的 beforeRouteUpdate 導(dǎo)航守衛(wèi):
const User = { template: '...', beforeRouteUpdate(to, from, next) { // react to route changes... // don't forget to call next() } }
二,params 傳參(不顯示參數(shù))
1,使用不顯示參數(shù)的方式,則不需要在進(jìn)行配置路由表:
{ path: "routers", name: "Routers", component: () => import("../views/routers/routers.vue") },
2,開始跳轉(zhuǎn)并傳參
注意:需要指定路由表中的 name與之相對(duì)應(yīng);
jumpTo() { this.$router.push({ name: "Routers", params:{ id:123 } }); }
3,獲取參數(shù)
this.$route.params.id
注意
:上述這種利用 params 不顯示 url 傳參的方式會(huì)導(dǎo)致在刷新頁面的時(shí)候,傳遞的值會(huì)丟失;需要謹(jǐn)慎使用。
三,query 傳參(顯示參數(shù))
這種傳參方式會(huì)把你的參數(shù)以問號(hào)拼接到路由上面;刷新頁面且路由不會(huì)丟失。
1,這種也不需要進(jìn)行配置路由表:
{ path: "routers", name: "Routers", component: () => import("../views/routers/routers.vue") },
2,開始跳轉(zhuǎn)并傳參
注意:需要與路由表中的 path屬性 與之相對(duì)應(yīng);
this.$router.push({ path:'/routers', query:{ id:123 } })
3,獲取參數(shù)
this.$route.query.id
到此這篇關(guān)于vue Router(v3.x) 路由傳參的三種方式詳解的文章就介紹到這了,更多相關(guān)vue Router 路由傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue使用el-table實(shí)現(xiàn)自適應(yīng)列寬
這篇文章主要為大家詳細(xì)介紹了Vue使用el-table實(shí)現(xiàn)自適應(yīng)列寬,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01vue-cli2與vue-cli3在一臺(tái)電腦共存的實(shí)現(xiàn)方法
這篇文章主要介紹了vue-cli2與vue-cli3在一臺(tái)電腦共存的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09ruoyi-vue3 集成aj-captcha實(shí)現(xiàn)滑塊、文字點(diǎn)選驗(yàn)證碼功能
這篇文章主要介紹了 ruoyi-vue3 集成aj-captcha實(shí)現(xiàn)滑塊、文字點(diǎn)選驗(yàn)證碼,本文基于后端RuoYi-Vue 3.8.7 和 前端 RuoYi-Vue3 3.8.7,集成以AJ-Captcha文字點(diǎn)選驗(yàn)證碼為例,不需要鍵盤手動(dòng)輸入,極大優(yōu)化了傳統(tǒng)驗(yàn)證碼用戶體驗(yàn)不佳的問題,感興趣的朋友一起看看吧2023-12-12使用Vue實(shí)現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù)
今天小編就為大家分享一篇使用Vue實(shí)現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10vue+Vue Router多級(jí)側(cè)導(dǎo)航切換路由(頁面)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue+Vue Router多級(jí)側(cè)導(dǎo)航切換路由(頁面)的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12vue2老項(xiàng)目中node-sass更換dart-sass的操作方法
這篇文章主要介紹了vue2老項(xiàng)目中node-sass更換dart-sass的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-07-07