Vue 入门之浅谈插槽slot(一)插槽的简单使用

it2022-05-05  121

@[TOC](Vue 入门之浅谈插槽slot(一)插槽的简单使用)

插槽是什么

Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将 元素作为承载分发内容的出口。 https://cn.vuejs.org/v2/guide/components-slots.html

如何使用插槽

创建Vue/Cli项目

vue creat slot

根据项目需求配置所需插件

清空App.vue文件,删除HelloWorld.vue

新建Temp.vue

在Temp.vue写一个简单的vue模板

<template> <div id="temp"> {{msg}} </div> </template> <script> export default { props:["msg"], data(){ return { } } } </script> <style> #temp{ border: 1px solid #ccc; width: 80%; height: 40px; margin-top: 20px; } </style>

在App.vue中引入Temp并作为子组件使用

<template> <div id="app"> <app-temp :msg="msg" /> </div> </template> <script> import Temp from "./components/Temp" export default { name: 'app', components: { "app-temp":Temp }, data(){ return { msg:"hello app" } } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; } #app span{ color: aqua; } </style>

此时只是简单的父组件向子组件传值跟slot并无关系,页面显示如下

如果我们向向子组件传递HTML代码的话props是无法实现的就需要用到slot

将页面结构做一下修改

App.vue

<template> <div id="app"> <app-temp> <span>{{msg}}</span> </app-temp> </div> </template> <script> import Temp from "./components/Temp" export default { name: 'app', components: { "app-temp":Temp }, data(){ return { msg:"hello app" } } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; } /* #app span{ color: aqua; } */ </style>

Temp.vue

<template> <div id="temp"> <slot></slot> </div> </template> <script> export default { data(){ return { } } } </script> <style> #temp{ border: 1px solid #ccc; width: 80%; height: 40px; margin-top: 20px; } </style> 此时页面显示如下 此时hello app并不是直接显示在#temp下而是将嵌套在span标签内

最新回复(0)