首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue 3在<slot>中传递数据

Vue 3在<slot>中传递数据
EN

Stack Overflow用户
提问于 2021-09-02 11:39:08
回答 2查看 1.6K关注 0票数 1

我所要达到的目标是:

在Post.vue中显示动态链接中的图像,该链接遵循PostLayout.vue的布局

在PostLayout.vue中,我有一个名为postFeaturedImage,在插槽内有一个,我想用图像作为它的背景。

我使用的是: Laravel,InertiaJS,Vue 3

我的密码是:

Post.vue:

代码语言:javascript
复制
<template>
    <PostLayout>
        <template #postfeaturedImage>
            <!-- Here I want to display the image -->
        </template>
    </PostLayout>
</template>

<script>
import PostLayout from '@/Layouts/PostLayout'

export default {
    data() {
        return {
            featured_image: ''
        }
    },
    components: {
        PostLayout,
    },
    props: {
        post: Object /* Passed the prop from Controller */
    },
    mounted () {
        this.featured_image = this.post.featured_image
    }
}
</script>

PostLayout.vue:

代码语言:javascript
复制
<template>
    <slot name="postfeaturedImage" :bgImage="bgImage">
        <div :style="`background-image:url(${bgImage}); height: 75vh;`"></div>
    </slot>
    
</template>

<script>
    export default {
        
    }
</script>

我删除了所有不相关的密码。我是一个初学者,在Vue 3和惰性和需要帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-02 13:17:53

另一种方法是创建一个FeaturedImage组件。另外,你也可以直接从你收到的道具中引用帖子图像。在本例中,不需要使用data方法和mounted

代码语言:javascript
复制
<template>
   <PostLayout>
      <template #postfeaturedImage>
         <FeaturedImage :src="post.featured_image" />
      </template>
   </PostLayout>
</template>

<script>
import PostLayout from '@/Layouts/PostLayout'
import FeaturedImage from '@/Layouts/FeaturedImage'

export default {
   components: {
      PostLayout,
      FeaturedImage
   },
   props: {
      post: Object
   }
}
</script>
票数 1
EN

Stack Overflow用户

发布于 2021-09-02 13:10:30

为您的PostLayout.vue添加一个道具

代码语言:javascript
复制
<script>
export default {
  props: {
    bgImage: { type: String },
  },
};
</script>

并给你的Post.vue中的道具一个价值

代码语言:javascript
复制
<template>
    <PostLayout :bgImage="featured_image"> </PostLayout>
</template>

如果你想要一个没有图片和不同布局的帖子,你应该这样做:

代码语言:javascript
复制
<template>
    <PostLayout>
      <template #postfeaturedImage> post without background image</template>
    </PostLayout>
</template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69029563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档