Vue插槽slot理解与初体验 ~
一、插槽的理解
1.官网介绍
Vue 实现了一套内容分发的 API,将 <slot> 元素作为承载分发内容的出口。
2.为什么使用插槽

Vue 中有一个重要的概念-组件,可以在开发中将子组件插入到父组件中,因此需要给子组件组件留出位置(这里的组件我的理解是可以理解成sql的一个占位符.),如图slot提供可以插入的位置,我们将component1和component2插入到big component中。

二、使用步骤
1.希望最终得到的页面
<div id="app">
    <div>
        <h3>图书列表</h3>
        <ul>
            <li>红楼梦</li>
        </ul>
    </div>
</div>

可以将该页面分为三部分来看,将这三部分注册成vue的组件
2.组件注册
<div id="app">
    <book-component></book-component>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
<script>
    //图书组件
    Vue.component('book-component',{
        template: '<div><h3>图书列表</h3><ul><li>红楼梦</li></ul></div>'
    });
    //图书标题组件
    Vue.component('book-component-title',{
        template: '<h3>图书列表</h3>'
    });
    //图书列表组件
    Vue.component('book-component-list',{
        template: '<li>红楼梦</li>'
    });
    let vApp = new Vue({
        el: '#app'
    });
</script>
直接引入注册的组件就能实现列表展示,下面需要把子组件插入到父组件中
3.添加插槽
<div id="app">
    <book-component>
        <book-component-title slot="title"></book-component-title>
        <book-component-list slot="list"></book-component-list>
    </book-component>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
<script>
    //图书组件
    Vue.component('book-component',{
        //<div>
        //    <slot name="title"></slot>
        //    <slot name="list"></slot>
        //</div>
        template: '<div><slot name=\'title\'></slot><ul><slot name=\'list\'></slot></ul></div>'
    });
    //图书标题组件
    Vue.component('book-component-title',{
        template: '<h3>图书列表</h3>'
    });
    //图书列表组件
    Vue.component('book-component-list',{
        template: '<li>红楼梦</li>'
    });
    let vApp = new Vue({
        el: '#app'
    });
</script>
在父组件中加入slot="",父组件slot中name可以随意指定;在子组件中加入<slot> 标签,标签的name必须和父组件对应

vue3.0后,v-slot:插槽名 取代了slot="插槽名"的写法 可参考:https://www.cnblogs.com/LUA123/p/10812164.html
3.绑定数据并传递
<div id="app">
    <book-component>
        <book-component-title slot="title" v-bind:ti="title"></book-component-title>
        <book-component-list slot="list" v-for="li in list" v-bind:l="li"></book-component-list>
    </book-component>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script>
<script>
    //图书组件
    Vue.component('book-component',{
        template: '<div><slot name=\'title\'></slot><ul><slot name=\'list\'></slot></ul></div>'
    });
    //图书标题组件
    Vue.component('book-component-title',{
        props: ['ti'],
        template: '<h3>{{ti}}</h3>'
    });
    //图书列表组件
    Vue.component('book-component-list',{
        props: ['l'],
        template: '<li>{{l}}</li>'
    });
    let vApp = new Vue({
        el: '#app'
        ,data: {
            title: '图书列表'
            ,list: [
                '红楼梦','三国演义','水浒传','西游记'
            ]
        }
    });
</script>
通过'props'接收参数,参数对应关系不要记错就行。

绑定数据之后最终页面

Vue插槽slot理解与初体验 ~的更多相关文章
- vue.js2.0 自定义组件初体验
		理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ... 
- vue 插槽slot总结 slot看这篇就够了
		一直模糊所以梳理一下,看了好多篇园友的文章和官网文档在这整理一下 默认插槽 //slot组件<template> <div class="slots"> s ... 
- vue 插槽slot
		本文是对官网内容的整理 https://cn.vuejs.org/v2/guide/components.html#编译作用域 在使用组件时,我们常常要像这样组合它们: <app> < ... 
- Vue插槽 slot
		1. 什么是插槽 插槽slot 是往父组件中插入额外内容,实现组件的复用,一个插槽插入到一个对应的标签中 2. 实例: 一个组件中不允许有两个匿名插槽 </head> <body&g ... 
- 三、深入Vue组件——Vue插槽slot、动态组件
		一.插槽slot() 1.1简单插槽slot [功能]用于从父组件中,通过子组件写成双标签,向子组件中放入自定的内容 parent.vue [1]首先把child写成双标签样式,把要插入的内容放双标签 ... 
- vue插槽slot的理解与使用
		一.个人理解及插槽的使用场景 刚开始看教程我的疑惑是为什么要用插槽,它的使用场景是什么,很多解释都是“父组件向子组件传递dom时会用到插槽”,这并不能很好的解决我的疑惑.既然你用了子组件,你为什么要给 ... 
- vue 插槽 ------ slot 简单理解
		solt 插槽 内容分发 什么是插槽 Vue 实现了一套内容分发的 API,将 `` 元素作为承载分发内容的出口. 插槽显示的位置却由子组件自身决定,槽写在组件模板的什么位置,父组件传过来的模板将来就 ... 
- vue中的插槽slot理解
		本篇文章参考赛冷思的个人博客 1.函数默认传参 在我们写js函数我们的可能会给他们一个默认的参数,写法是 function show(age,name){ var age = age || 20; v ... 
- vue 插槽 slot
		<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ... 
随机推荐
- 关于SequenceInputStream
			两个流合并时: package stream.sequence; import java.io.BufferedReader; import java.io.BufferedWriter; impor ... 
- vue+vant实现购物车的全选和反选业务,带你研究购物车的那些细节!
			前言 喜欢购物的小伙伴看过来,你们期待已久的购物车来啦!相信小伙伴逛淘宝时最擅长的就是加入购物车了,那购物车是如何实现商品全选反选的呢?今天就带你们研究购物车的源码,以vue+vant为例. 正文 首 ... 
- Java通过网络图片之地址,下载到服务器
			@RequestMapping("/downloadTableQrcode") public String downloadTableQrcode(HttpServletReque ... 
- Python3-sqlalchemy-orm 分组统计
			#-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ... 
- etcd学习(8)-etcd中Lease的续期
			etcd中的Lease 前言 Lease Lease 整体架构 key 如何关联 Lease Lease的续期 过期 Lease 的删除 checkpoint 机制 总结 参考 etcd中的Lease ... 
- RabbitMQ从零到集群高可用(.NetCore5.0) -高可用集群构建落地
			系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ... 
- 从IT圈“鄙视链”看前端开发有多难?
			如今"鄙视链"体现在生活的方方面面,各行各业都有默认一致的鄙视链.IT圈子因为开发语言多样.工程师岗位种类多.技术框架多,也有自己圈子内的鄙视链.按照开发工程师的岗位形成的鄙视链是 ... 
- 利用job提升马哈鱼数据血缘分析效率
			利用job提升马哈鱼数据血缘分析效率 一.Job基本知识 前面文章中已介绍马哈鱼的基本功能,其中一个是job,job其实是一个任务集合处理的概念,就是让用户通过job,可以一次递交所有需要处理的 SQ ... 
- MongoDB(15)- 查询操作里面的游标 cursor
			db.collection.find() 方法里面的游标 该方法最后会返回一个 cursor 正常情况下,访问文档必须迭代游标 重点事项 当调用 find() 函数时,Shell 并不立即查询数据库, ... 
- C# AutoMaper使用自定义主键
			有时候实际业务中主键不一定叫Id,比如示例数据库Northwind中的RegionID,TerritoryID等,本示例用Abp框架并以Northwind数据库Region表为数据依据 一.在Core ... 
