【问题标题】:Use dynamic Refs correctly in Vue 3 (Composition Api)在 Vue 3 (Composition Api) 中正确使用动态 Refs
【发布时间】:2021-04-09 13:30:26
【问题描述】:

我正在为在 Vue Composition Api 中使用动态引用而苦苦挣扎。 Vue guide 说我可以这样使用它:

<div v-for="item in list" :ref="setItemRef"></div>
import { onBeforeUpdate, onUpdated } from 'vue'

export default {
  setup() {
    let itemRefs = []
    const setItemRef = el => {
      if (el) {
        itemRefs.push(el)
      }
    }
    onBeforeUpdate(() => {
      itemRefs = []
    })
    onUpdated(() => {
      console.log(itemRefs)
    })
    return {
      setItemRef
    }
  }
}

但我的代码在这里(缩短):

<template>
    <section
      v-for="(item, i) of storyList"
      :ref="(el) => { if (el) { divs.push(el) } }"
    />
</template>

<script lang="ts">
[...]
export default defineComponent({
  props: {
    storyList: {
      type: Array as () => StoryList,
      required: true,
    },
  },
  setup() {
    const divs = ref([])
    
    return { divs }
  },
})
</script>

...我的 Vue 开发工具中只有这个:

data:
divs:Array[0]

$refs:
function(el) { if (el) { _vm.divs.push(el) } }:Array[4]
0:<section id="story-0" class="story-item">
1:<section id="story-1" class="story-item">
2:<section id="story-2" class="story-item">
3:<section id="story-3" class="story-item">

这是不对的,不是吗? 我应该从divs 调用参考,而不是从$refs(什么在 vue 3 中不起作用),对吧?

【问题讨论】:

标签: vue.js vuejs3 vue-composition-api


【解决方案1】:

你没有对数组的反应,所以使用这个: reactive([])

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2018-08-09
    • 1970-01-01
    • 2023-02-10
    • 2021-02-06
    • 2020-06-16
    • 2023-02-17
    • 1970-01-01
    • 2022-11-05
    相关资源
    最近更新 更多