美文网首页
v-for实现绑定ref数组

v-for实现绑定ref数组

作者: 大码猴 | 来源:发表于2022-08-04 10:55 被阅读0次

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例。
当 v-for 用于元素或组件的时候,引用信息将是包含 DOM 节点或组件实例的数组
例如:
vue2

<div  v-for="(item,index) in list" :key="item.id" :ref="item.name"></div>
// 使用 console.log(this.$refs)
this.$refs.itemName[0]

vue3
先附上vue3官网推荐写法

<div v-for="(item,index) in list" :key="item.id">
    <div :ref="setItemRef"></div>
</div>

setup() {
    const state = reactive({
        list:[
            {
                id:"0001",
                name:"re1"
            },{
                id:"0001",
                name:"re1"
          }]
    })
    const itemRef = ref([])
    const setItemRef = (el) => {
      itemRef.value.push(el)
    }
    return {
         ...toRefs(state),
        setItemRef,
    }
}

实际使用过程中会发现setItemRef中出现重复的ref,导致无法正确捡出需要的dom。
主要原因是受vue的响应式系统影响,当绑定的这个元素发生变化的时候会触发ref,在使用push添加元素时, 会在更新的时候造成bug, 元素会重复。
之前尝试过利用Set去重,虽然可以保证setItemRef只有一个需要的对象,但是使用过程中仍然会报找不到对应dom。
后来在前辈这里找到了解决方案。直接贴代码:

<div v-for="(item, index) in list" :key="item.id">
    <div :ref="el => setItemRef[index]=el"></div>
</div>

setup(){
    const state = reactive({
        list:[
            {
                id:"0001",
                name:"re1"
            },{
                id:"0001",
                name:"re1"
          }]
    })
    const setItemRef = ref([]) 
    return {
        ...toRefs(state),
        setItemRef,
    }
}

相关文章

  • vue的指令

    ** v-model 双向数据绑定 ** v-for 数组,对象,数值 最后一...

  • vue中的常用指令一(v-for循环)

    在HTML中的基础v-for循环代码 v-for 指令可以绑定数组的数据value in arr : value为...

  • Vue 循环渲染

    v-for指令的使用 在 Vue 中,可以使用 v-for 指令绑定数据到数组来渲染一个列表。 使用 v-for ...

  • el-form表单循环验证

    需求如上图: 注释:1.prop绑定的参数,第一部分为v-for绑定的数组,中间为index,v-for需要加上i...

  • 2018-09-24(vue指令)路由嵌套

    vue指令 v-for=''(循环数组 对象 数组对象) v-model=''(双向数据绑定,用于表单元素) v-...

  • 用vue做一个简单的购物车效果

    简易购物车用到的指令有:v-for=‘ ’:循环数组,对象,数组对象v-on:click=‘ ’:用来绑定事件还可...

  • Vue 2

    v-for="val /value(值) in arr "用来循环数组、对象v-model=" "双向数据绑定,用...

  • [每天进步一点点~] uni-app 页面跳转及传值

    1. v-for 在uni-app开发项目时,若使用 v-for 循环遍历数组,注意要绑定 key ,否则运行到别...

  • 内部指令

    指令总结 v-bind: 单向绑定解析表达式,可简写为:xxxv-model:双向数据绑定v-for:遍历数组/对...

  • 2018-09-11

    简单的vue实例 记得导入vue.js 输出如下 v-for 指令可以绑定数组的数据value in arr : ...

网友评论

      本文标题:v-for实现绑定ref数组

      本文链接:https://www.haomeiwen.com/subject/mrcpwrtx.html