欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3?setup中使用$refs的方法詳解

 更新時(shí)間:2023年08月17日 11:45:20   作者:瑾修  
在?Vue?3?中的?Composition?API?中,$refs?并不直接可用于?setup?函數(shù),但是實(shí)際工作中確實(shí)有需求,那么該如何解決呢,本文為大家整理了兩個(gè)方案,希望對(duì)大家有所幫助

在 Vue 3 中的 Composition API 中, $refs 并不直接可用于 setup 函數(shù)。這是因?yàn)?$refs 是 Vue 2 的實(shí)例屬性,而在 Vue 3 中, setup 函數(shù)是與模板實(shí)例分離的,不再使用實(shí)例屬性。

實(shí)際工作中確實(shí)有需求,在 setup 函數(shù)使用$refs,下面有兩種方法。

方案

方案一:getCurrentInstance

<template>
    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" />
        <el-table-column label="Date" width="120">
            <template #default="scope">{{ scope.row.date }}</template>
        </el-table-column>
        <el-table-column property="name" label="Name" width="120" />
        <el-table-column property="address" label="Address" show-overflow-tooltip />
    </el-table>
    <div style="margin-top: 20px">
        <el-button @click="toggleSelection([tableData[1], tableData[2]])">Toggle selection status of second and third
            rows</el-button>
        <el-button @click="toggleSelection()">Clear selection</el-button>
    </div>
</template>
<script setup>
import { ref, getCurrentInstance } from 'vue'
const tableData = [
    {
        date: '2016-05-03',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-02',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-04',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-01',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-08',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-06',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-07',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
]
const multipleSelection = ref([])
const handleSelectionChange = (val) => {
    multipleSelection.value = val
}
const {proxy} = getCurrentInstance();
const toggleSelection = (rows) => {
    if (rows) {
        rows.forEach((row) => {
            proxy.$refs.multipleTableRef.toggleRowSelection(row, undefined)
        })
    } else {
        proxy.$refs.multipleTableRef.clearSelection()
    }
}
</script>

方案二: ref

<template>
    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" />
        <el-table-column label="Date" width="120">
            <template #default="scope">{{ scope.row.date }}</template>
        </el-table-column>
        <el-table-column property="name" label="Name" width="120" />
        <el-table-column property="address" label="Address" show-overflow-tooltip />
    </el-table>
    <div style="margin-top: 20px">
        <el-button @click="toggleSelection([tableData[1], tableData[2]])">Toggle selection status of second and third
            rows</el-button>
        <el-button @click="toggleSelection()">Clear selection</el-button>
    </div>
</template>
<script setup>
import { ref } from 'vue'
const tableData = [
    {
        date: '2016-05-03',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-02',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-04',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-01',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-08',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-06',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
    {
        date: '2016-05-07',
        name: 'Tom',
        address: 'No. 189, Grove St, Los Angeles',
    },
]
const multipleTableRef = ref()
const multipleSelection = ref([])
const handleSelectionChange = (val) => {
    multipleSelection.value = val
}
const toggleSelection = (rows) => {
    if (rows) {
        rows.forEach((row) => {
            multipleTableRef.value.toggleRowSelection(row, undefined)
        })
    } else {
        multipleTableRef.value.clearSelection()
    }
}
</script>

在這個(gè)示例中,multipleTableRef 是一個(gè)通過(guò) ref 創(chuàng)建的響應(yīng)式變量,用于存儲(chǔ)對(duì) el-table 元素的引用。

結(jié)果顯示

到此這篇關(guān)于Vue3 setup中使用$refs的方法詳解的文章就介紹到這了,更多相關(guān)Vue3 setup內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vuex與map映射實(shí)現(xiàn)方法梳理分析

    vuex與map映射實(shí)現(xiàn)方法梳理分析

    Vuex中的映射允許您將state中的任何屬性(state、getter、mutation和action)綁定到組件中的計(jì)算屬性,并直接使用state中的數(shù)據(jù),下面我們來(lái)詳細(xì)了解
    2022-09-09
  • vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能

    vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能

    這篇文章主要介紹了vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能,登錄時(shí)圖形驗(yàn)證通過(guò)三種方法結(jié)合實(shí)例代碼給大家講解的非常詳細(xì), 通過(guò)實(shí)例代碼介紹了vue登錄時(shí)圖形驗(yàn)證碼功能的實(shí)現(xiàn),感興趣的朋友一起看看吧
    2023-12-12
  • Vue.js?模板語(yǔ)法和數(shù)據(jù)綁定

    Vue.js?模板語(yǔ)法和數(shù)據(jù)綁定

    這篇文章主要介紹了Vue.js?模板語(yǔ)法和數(shù)據(jù)綁定,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 詳解Vue中狀態(tài)管理Vuex

    詳解Vue中狀態(tài)管理Vuex

    vuex是一個(gè)專門(mén)為vue.js設(shè)計(jì)的狀態(tài)管理模式,并且也可以使用devtools進(jìn)行調(diào)試。
    2017-05-05
  • vue動(dòng)態(tài)添加背景圖簡(jiǎn)單示例

    vue動(dòng)態(tài)添加背景圖簡(jiǎn)單示例

    這篇文章主要給大家介紹了關(guān)于vue動(dòng)態(tài)添加背景圖的相關(guān)資料,在一些場(chǎng)景下我們需要使用戶可以進(jìn)行自定義背景圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • vue + node如何通過(guò)一個(gè)Txt文件批量生成MP3并壓縮成Zip

    vue + node如何通過(guò)一個(gè)Txt文件批量生成MP3并壓縮成Zip

    這篇文章主要介紹了vue + node如何通過(guò)一個(gè)Txt文件批量生成MP3并壓縮成Zip的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Vue數(shù)據(jù)回顯表單無(wú)法編輯的解決方案

    Vue數(shù)據(jù)回顯表單無(wú)法編輯的解決方案

    這篇文章主要介紹了Vue數(shù)據(jù)回顯表單無(wú)法編輯的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Vue 3 + Element Plus樹(shù)形表格全選多選及子節(jié)點(diǎn)勾選的問(wèn)題解決方法

    Vue 3 + Element Plus樹(shù)形表格全選多選及子節(jié)點(diǎn)勾選的問(wèn)題解決方

    在本文中,我們解決了Vue 3和Element Plus樹(shù)形表格中的全選、多選、子節(jié)點(diǎn)勾選和父節(jié)點(diǎn)勾選等常見(jiàn)問(wèn)題,通過(guò)逐步實(shí)現(xiàn)這些功能,您可以構(gòu)建功能強(qiáng)大且用戶友好的樹(shù)形表格組件,以滿足各種數(shù)據(jù)展示需求,對(duì)Vue 3 Element Plus樹(shù)形表格相關(guān)知識(shí)感興趣的朋友一起看看吧
    2023-12-12
  • 基于vuejs實(shí)現(xiàn)一個(gè)todolist項(xiàng)目

    基于vuejs實(shí)現(xiàn)一個(gè)todolist項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了基于vuejs實(shí)現(xiàn)一個(gè)todolist項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • vue前端頁(yè)面數(shù)據(jù)加載添加loading效果的實(shí)現(xiàn)

    vue前端頁(yè)面數(shù)據(jù)加載添加loading效果的實(shí)現(xiàn)

    這篇文章主要介紹了vue前端頁(yè)面數(shù)據(jù)加載添加loading效果的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論