首页 > 其他分享 >vue之动态组件&插槽

vue之动态组件&插槽

时间:2023-06-08 19:11:23浏览次数:53  
标签:vue 插槽 var template 标签 组件 home

1.动态组件

<!-- <component :is="who"></component>-->
<!-- component标签的is属性等于组件名字,这里就会显示这个组件-->
<!--keep-alive的使用:可以将组件缓存,后期切过来时资源不会被销毁-->
<!--动态组件start-->
<div id="trends">
    <button @click="who='home'">首页</button>
    <button @click="who='order'">订单</button>
    <button @click="who='good'">商品</button>
    <hr>
    <keep-alive>
        <component :is="who"></component>
    </keep-alive>
</div>
<!--动态组件end-->
var home = {template: `<h1>首页</h1>`,}
var order = {template: `<div><h1>订单</h1> <input type="text"> <button>搜索</button></div>`,}
var good = {template: `<h1>商品</h1>`,}
let vm1 = new Vue({
    el: "#trends",
    data: {who: 'home'},
    components: {home, order, good}
})

2.插槽

一般插槽

# 一般情况下,编写完1个组件之后,组件的内容都是写死的,需要加数据 只能去组件中修改,扩展性很差
# 然后就出现了插槽这个概念,只需在组件中添加<slot></slot>,就可以在body的组件标签中添加内容


# 使用步骤:
    # 1 在组件的html的任意位置,放个标签
        <slot></slot>
    # 2 后期在父组件使用该组件时
        <lqz>
        放内容
    		</lqz>
		# 3 放的内容,就会被渲染到slot标签中

具名插槽

# 使用步骤:
1 组件中可以留多个插槽,命名
    <div>
        <h1>我是一个组件</h1>
        <slot name="middle"></slot>
        <h2>我是组件内部的h2</h2>
        <slot name="footer"></slot>
    </div>
2 在父组件中使用时,指定某个标签渲染到某个插槽上
    <lqz>
        <div slot="footer">
            我是div
        </div>

        <img src="https://scpic.chinaz.net/files/default/imgs/2023-05-12/23659b1edfc0a984.jpg" alt="" slot="middle">

    </lqz>
<!--slot插槽start-->
<div id="insert">
    <aque>
        <div>一般插槽</div>
        <div slot="footer">具名插槽</div>
    </aque>
</div>
<!--slot插槽end-->
var aque = {template: `<div> <h1>第一行</h1><slot name="footer"></slot><h1>第二行</h1><slot ></slot> </div>`,}
let vm2 = new Vue({
    el: '#insert',
    components: {aque}
})

标签:vue,插槽,var,template,标签,组件,home
From: https://www.cnblogs.com/10086upup/p/17467432.html

相关文章

  • Vue-后台管理项目002---用户管理
    用户列表开发解决用户列表小问题现在点击用户列表了,主区域也有数据了,但是用户列表本身没有高亮意思是当前激活菜单的index,赋值给default-active属性,就可以高亮了在每次点击的时候,把对应的地址放在sessionStorage中保存起来,这样的话,就把需要激活的链接保存起来了当我们刷新页面的......
  • Vue学习笔记之Vue项目启动gyp ERR! find Python
    0x00报错详细该报错在Windows和MacOS平台均会出现,项目启动时候报错如下:E:\vue-admin\node_modules\fibers>ifnotdefinednpm_config_node_gyp(node"D:\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.......
  • vue3 祖孙通信
    利用provide和inject  provide用于向子组件(或子组件中的子组件,无限嵌套)提供自身的一些数据,或者将自身所有属性全部提供,但是提供的数据均为非响应式数据。 inject用于引入父级组件所提供的数据 1、祖父组件import{ref,reactive,provide}from"vue";constgrandFat......
  • 报错:[Vue warn]: Error in render: "TypeError: Cannot read properties of undefined
    1.错误详情2.错误分析百度此错误发现,很多人可能忘记在main.js中引入store.js并挂载在vue实例上,或者state单词写错了我审查了很多遍代码,依然报错,读取不到state中的数据,后来想到可能是版本的问题此项目是vue2,要使用vuex3才能正常运行,我安装的时候没有指定版本,直接装的是最新的v......
  • Vue组件和Vue实例的理解
    关于VueComponent:1、组件本质是一个名为VueComponent的构造函数,并且不是程序员定义的,是Vue.extend生成的2、我们只需要写组件引入<Demo/>,Vue解析时会帮我们创建demo组件的实例对象,即Vue帮我执行的:new VueComponent(options)3、特别注意:每次调用Vue.extend,返回的都是一个全......
  • uniapp+微信小程序+vue3 实现富文本编辑器遇到的坑
     问题一:富文本编辑器初始化实例出不来,有两个原因:找的参考代码不适用微信小程序,需要用.in(this)uni.createSelectorQuery().in(this).select("#editor").context(res=>{this.editorCtx=res?.context;}).ex......
  • Vue全局事件总线(GlobalEventBus)
    Vue全局事件总线1、一种组件间通信的方式,适用于任意组件间通信。2、安装全局事件总线//main.js中安装全局事件总线newVue({render:h=>h(App),beforeCreate(){Vue.prototype.$bus=this//安装全局事件总线,$bus就是当前的vue实例}}).$mount('#app')......
  • JS stacktrace Vue 项目过大内存泄漏
    1.运行以下命令npminstall-gincrease-memory-limitincrease-memory-limit4096mb#改成适合本机的内存2.可能会提示  "node--max-old-space-size=10240"'不是内部或外部命令,也不是可运行的程序在node_modules文件夹下的.bin文件夹搜索"%_prog%"替换成%_prog%......
  • vue3中使用less
    在Vue3中使用Less(LeanerStyleSheets)可以通过以下步骤完成:安装less和less-loader:首先,你需要安装Less和LessLoader依赖。在Vue项目的根目录下,可以使用npm或yarn运行以下命令来安装它们:npminstalllessless-loader或yarnaddlessless-loader配置webpack:VueCLI默认......
  • vue文档下载
    文档中{普通文字}{%图片}{%%居中图片}<template><el-date-pickerv-model="value"class="timePicker"type="day"placeholder=""format="YYYY-MM-DD"......