Vue3 如何在组合式 api 中获取循环中的组件的 Ref

本文将介绍 Vue 3 中如何在组合式 API 中获取循环中的组件的 ref。我们将通过在父组件中使用 ref 指令和 v-for 指令来声明和动态创建一个引用,然后在 onMounted 生命周期钩子中循环遍历数据来获取每个子组件的引用并存储在对应的引用中。这种方法可以让我们轻松地在循环中获取子组件的引用并进行操作,非常方便实用。 基本用法 在 Vue 3 中,可以使用 ref 和 v-for 指令来在循环中获取组件的引用。 首先,在组件中,使用 ref 指令来声明一个引用: <template> <div ref="myComponent"></div> </template> 然后,在包含循环的父组件中,可以使用 v-for 指令来遍历数据并在循环中获取子组件的引用: <template> <div v-for="item in items" :key="item.id"> <my-component ref="myComponentRefs[item.id]"></my-component> </div> </template> <script> import { ref, onMounted } from "vue"; export default { setup() { const myComponentRefs = ref({}); const items = [{ id: 1 }, { id: 2 }, { id: 3 }]; onMounted(() => { items.forEach(item => { myComponentRefs.value[item.id] = myComponentRefs.value[item.id].$refs.myComponent; }); }); return { items, myComponentRefs, }; }, }; </script> 上面的例子中,使用 ref 指令在父组件中声明了一个名为 myComponentRefs 的引用。然后,在循环中,使用 myComponentRefs[item.id] 来动态创建一个引用来存储子组件的引用。在 onMounted 生命周期钩子中,通过循环遍历 items 数组来获取每个子组件的引用并存储在对应的引用中。 ...

2023年3月3日 · 2 分钟 · 诚哥博客

Vue2、Vue3双向绑定封装组件例子

Vue2、Vue3 双向绑定封装组件例子:本文将讲述如何使用 Vue2 和 Vue3 的双向绑定功能,来创建封装组件,并且提供了一个实际的示例。 Vue2 以下是一个简单的双向绑定组件示例,使用 Vue 的 v-model 指令来实现数据的双向绑定: <template> <div> <label for="input">输入:</label> <input type="text" id="input" :value="value" @input="$emit('input', $event.target.value)" /> </div> </template> <script> export default { props: { value: { type: String, required: true, }, }, }; </script> 在这个示例中,组件接受一个名为 value 的 prop,用于传递输入框的值。在模板中,使用 :value 绑定输入框的值到 value prop 上,实现初始值的渲染。同时,使用 @input 监听输入框的输入事件,并通过 $emit 方法触发名为 input 的自定义事件,传递输入框的新值作为参数。这样,父组件就可以通过 v-model 指令将数据双向绑定到这个组件上。 假设父组件中有一个名为 text 的 data 属性,可以像这样使用这个组件: <template> <div> <my-input v-model="text" /> <p>输入的文本是:{{ text }}</p> </div> </template> <script> import MyInput from "./MyInput.vue"; export default { components: { MyInput, }, data() { return { text: "", }; }, }; </script> Vue3 在这个示例中,通过 v-model 指令将父组件的 text 数据属性双向绑定到 MyInput 组件的 value prop 上,实现了输入框值的同步更新。同时,通过模板插值将 text 数据属性渲染到页面上,实时显示输入框中的文本。 ...

2023年2月27日 · 1 分钟 · 诚哥博客