首页 > 其他分享 >Vue 插槽

Vue 插槽

时间:2024-08-22 11:04:13浏览次数:9  
标签:slot Vue 插槽 内容 template 标签 组件

如果向组件标签中输入内容,会被忽略掉 1、props接受父组件传递过来的数据 2、插槽,接受父组件向子组件传递的html文本 在组件中通过slot标签可以接收父组件传递过来的html文本,就是将slot标签添加到template标签中 如下:现在组件中添加标签

        <sub-component :pmsg='msg'>
         <h3>sub-component之间的内容</h3>
        </sub-component>

再在template设置slot标签,以显示组件中添加的标签

    <template id="subComponent">
        <div>
            <h2>subComponent组件</h2>
            <p>subComponent组件数据{{username}}</p>
            <p>父组件传递过来的数据:{{pmsg}}</p>
            <slot></slot>
        </div>
        
    </template>

 

 vue插槽后备内容

后备内容 有时为一个插槽设置具体的后备(也就是默认的)内容是很有用的, 他只会在没有提供内容的时候被渲染  具名插槽: 如果定义了多个插槽,想把指定内容放到指定插槽中, 默认情况下: 当使用组件时,组件定义的所有html文本都会放到插槽里面 因此,需要给插槽取一个名字。同时,在向具名插槽提供内容的时候,我们可以在一个template元素上是用 v-slot指令,并已v-slot的参数的形式提供其名称。
    <div id="app">
        <base-layout id="layout">
            <!-- 当使用组件时,组件定义的所有html文本都会放到插槽里面 
                  在向具名插槽提供内容的时候,我们可以在一个template元素上是用
                  v-slot指令,并已v-slot的参数的形式提供其名称
            -->
            <template v-slot:header>
                <h3 >我是要插入的头部内容</h3>
            </template>
            
            <template v-slot:main>
                <h3>我是要插入的主体内容</h3>
            </template>
            
            <template v-slot:footer>
                <h3>我是要插入的底部内容</h3>
            </template>
            
        </base-layout>
    </div>
    <!-- 定义一个组件,在组件内部定义多个插槽 -->
    <template id="baseLayout">
        <div>
            <header>
                <p>头部</p>
                <!-- slot内容的默认值是defalut -->
                <slot name="header"></slot>
            </header>
            <main>
                <p>主题</p>
                <slot></slot>
            </main>
            <footer>
                <p>底部</p>
                <slot name="footer"></slot>
            </footer>
        </div>
    </template>
    <script src="../js/vue.js"></script>
    <script>
        Vue.component('baseLayout', {
            template:'#baseLayout',
            data () {
                return {
                    username:'tom'
                }
            },
            props: ['pmsg']
        })
        let vm = new Vue({
            el : "#app",
            data : {
                msg:'hello vue'
            },
            components: {
                'btn-tpl' : {
                    template:'#btn-tpl'
                }
                
            }
        })
    </script>

 

 

标签:slot,Vue,插槽,内容,template,标签,组件
From: https://www.cnblogs.com/yansunda/p/18372402

相关文章

  • 计算机毕业设计django+vue网上水果商城系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为人们日常生活中不可或缺的一部分,尤其在后疫情时代,线上购物更是成为了消费者获取商品与服务的主要......
  • 计算机毕业设计django+vue超市会员管理系统设计与实现【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和电子商务的普及,超市管理逐渐向数字化、智能化转型。传统超市在会员管理、商品信息维护、订单处理及积分兑换等方......
  • 【Vue】el-autocomplete禁用时仍会触发下拉的问题
    文章目录问题解决问题el-autocomplete禁用时,点击后仍会触发下拉,导致出现bug<el-autocompletev-model="modelValue":fetch-suggestions="queryAsync"class="autocomplete":disabled="isDis"@select="doSelect($event,item)&......
  • 使用 Vue I18n 进行 Vue.js 应用的国际化
    随着互联网的全球化发展,开发多语言支持的应用变得越来越重要。Vue.js作为一个流行的前端框架,通过vue-i18n插件,能够非常方便地实现应用的国际化(i18n)。本文将介绍如何在Vue.js应用中使用vue-i18n进行国际化设置。什么是国际化(i18n)?国际化(Internationalization)通常简写......
  • vue3解决跨域问题
     vue3登录提示错误 解决方法1,修改根目录下vite.config.ts文件 修改host、proxy、target,修改后文件如下(红色为修改),具体内容根据后台实际修改 server:{ host:'localhost', port:env.VITE_PORTasunknownasnumber, open:JSON.parse(env.VITE_OPEN),......
  • 043、Vue3+TypeScript基础,pinia库使用action,在函数中对存储数据进行修改
    01、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//第一步:引入piniaimport{createPinia}from'pinia'constapp=createApp(App);//第二步:创建pinia实例constpinia=......
  • [vue3] vue3更新组件流程与diff算法
    在Vue3中,组件的更新通过patch函数进行处理。patch函数源码位置:core/packages/runtime-core/src/renderer.tsatmain·vuejs/core(github.com)constpatch:PatchFn=(n1,n2,container,anchor=null,parentComponent=null,parentSuspen......
  • 042、Vue3+TypeScript基础,pinia库存储数据修改的两种方式
    01、main.ts代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//第一步:引入piniaimport{createPinia}from'pinia'constapp=createApp(App);//第二步:创建pinia实例constpinia=......
  • 041、Vue3+TypeScript基础,使用pinia库来储存数据
    01、输入npminstallpinia 02、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//第一步:引入piniaimport{createPinia}from'pinia'constapp=createApp(App);//第二步......
  • springboot+vue高校多媒体教室管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和教育改革的不断深入,高校教学模式正逐步向信息化、智能化转型。多媒体教室作为现代化教学的重要载体,其管理效率与服务质量直接影响到教学活动的开展与教学效果的提升。然而,传统的高校多媒体教室管理方式多依赖......