我是靠谱客的博主 现代铃铛,最近开发中收集的这篇文章主要介绍vue3父组件向子组件传值,异步数据,子组件需要监听才能取到,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

父组件

<script setup>
import { ref } from "vue";
import getPosts from "../composibles/getPosts";
import PostList from "../components/PostList.vue";
import Spinner from "../components/Spinner.vue";
import TagCloud from "../components/TagCloud.vue";
const {posts,load}=getPosts();   
load();    
</script>
 
<template>
    <div class="home">
      <div v-if="posts" class="layout">
      <PostList :posts="posts" />
      <TagCloud :posts="posts" v-if="posts!=null"/>
        </div>
     <div v-else>
     <Spinner/>
     </div>
    </div>
</template>
 
<style scoped>
 .home{
  max-width: 1200px;
  margin:0 auto;
  padding:10px;
 }
 .layout{
  display: grid;
  grid-template-columns: 3fr 1fr;
  gap:20px;
 }
</style>

子组件

<script setup>
import { ref,watch} from "vue";
 
const tags=ref([]);
const tagSet=new Set();
const props = defineProps({
    posts:Array,  
});
watch(
    () => props.posts,
    (val, prevVal) => {
        val.forEach ((item)=>{
    item.tags.forEach((tag)=>
        tagSet.add(tag)
    )
});
tags.value=[...tagSet];
    }
)
 
</script>
 
<template>
    <div class="tag-cloud">
        <h3>标签</h3>
        <div v-for="tag in tags" :key="tag">
        <router-link :to="{name:'Tag',params:{tag:tag}}">#{{tag}}</router-link>
        </div>
    </div>
</template>
 
<style scoped>
.tag-cloud{
    padding:10px;
}
.tag-cloud h3{
    border-bottom:1px solid #eee;
    padding:16px 8px;
    color:#444;
}
.tag-cloud div{
    display: inline-block;
    padding:10px;
 
}
.tag-cloud a{
    color:#ccc;
    text-decoration: none;
}
</style>

最后

以上就是现代铃铛为你收集整理的vue3父组件向子组件传值,异步数据,子组件需要监听才能取到的全部内容,希望文章能够帮你解决vue3父组件向子组件传值,异步数据,子组件需要监听才能取到所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部