vue插槽slot
前言
當父元件在使用一個子元件的時候,可以使用單標籤的形式,也可以使用雙標籤的形式,比如<Child /> 或者<Child></Child>。當時使用雙標籤的形式時,如果我們在兩個標籤中放入一些內容,比如<Child>hello world</Child>,子元件是可以通過插槽slot來獲取標籤中的內容,下面是官網的幾個demo
demo1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<!-- 使用子元件 -->
<navigation-link>這是父元件上的一些內容</navigation-link>
</div>
</body>
</html>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
// 註冊子元件navigation-link
Vue.component(`navigation-link`, {
data() {},
// 如果 <navigation-link> 沒有包含一個 <slot> 元素,則任何傳入它的內容都會被拋棄。
template: `
<a v-bind:href="url" class="nav-link" >
<slot></slot>
</a>`
})
new Vue({
el: `#app`,
data: {
}
})
</script>
demo2-具名插槽
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<base-layout>
<!-- template 也可以是個普通元素,請看footer的slot -->
<template slot="header">
<h1>頁面標題</h1>
</template>
<p>A paragraph for the main content.</p>
<p>And another one.</p>
<div slot="footer">
<mark>頁面底部資訊</mark>
</div>
</base-layout>
</div>
</body>
</html>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
// slot具名以後就可以插到對應的位置,否則規則跟非具名插槽一樣
Vue.component(`base-layout`, {
template: `
<div class="container">
<header>
<slot name="header"></slot>
</header>
<main>
<slot></slot>
</main>
<footer>
<slot name="footer"></slot>
</footer>
</div>`
})
new Vue({
el: `#app`
})
</script>
demo3-預設值
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<Child>提交</Child>
<!--當Child中間不傳入內容時使用預設值-->
<Child></Child>
</div>
</body>
</html>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
Vue.component(`Child`,{
template: `
<button type="submit">
<slot>Submit</slot>
</button>`
});
new Vue({
el: `#app`
})
</script>
demo4-作用域插槽
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="app">
<todo-list :todos="todos">
<!-- 用slot-scope接收子元件回傳的資訊 -->
<template slot-scope="slotProps">
<span v-if="slotProps.todo.isComplete"></span> {{ slotProps.todo.text }}
</template>
</todo-list>
</div>
</body>
</html>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
Vue.component(`todo-list`, {
props: [`todos`],
template: `
<ul>
<li
v-for="todo in todos"
v-bind:key="todo.id">
<!-- 回傳資訊 -->
<slot v-bind:todo="todo">
{{ todo.text }}
</slot>
</li>
</ul>`
})
new Vue({
el: `#app`,
data: {
todos: [
{
text: `買機械鍵盤`,
isComplete: true
}, {
text: `打羽毛球`,
isComplete: true
},
{
text: `去教會做禮拜`,
isComplete: false
}]
}
})
</script>
相關文章
- VUE 插槽 slotVue
- [vue] 插槽 slotVue
- Vue 作用域插槽slotVue
- 對Vue插槽slot的理解Vue
- Vue(14)slot插槽的使用Vue
- Vue 插槽(slot)使用(通俗易懂)Vue
- 8.Vue元件三---slot插槽Vue元件
- 12.在vue中插槽(slot)Vue
- 初識 Vue(19)---(Vue 中使用插槽(slot))Vue
- Vue作用域插槽 :slot-scope 例項Vue
- Vue 開發之插槽(slot)的理解和使用Vue
- vue2.6之後的 v-slot插槽Vue
- vue.js-使用slot插槽分發內容Vue.js
- Vue.js——slot-插槽的基本使用——2020.12.7Vue.js
- 「Vue原始碼學習」你真的知道插槽Slot是怎麼“插”的嗎Vue原始碼
- 032.Vue3入門,插槽Slot的作用域和預設內容Vue
- Vue插槽與作用域插槽Vue
- [Vue] slot詳解,slot、slot-scope和v-slotVue
- mapboxgl V3 Slot插槽使用介紹
- vue slot 用法Vue
- 033.Vue3入門,多個插槽Slot的命名呼叫和#號簡寫Vue
- vue。js插槽VueJS
- Vue slot的用法Vue
- Vue 中的 slotVue
- Vue中使用插槽Vue
- 035.Vue3入門,使用具名插槽Slot中,同時顯示主頁面和多個插槽頁面內容Vue
- Vue 插槽之插槽內容學習總結Vue
- 細談 vue - slot 篇Vue
- vue基礎-元件&插槽Vue元件
- 06 Vue3插槽Vue
- 深入理解vue中的slot與slot-scopeVue
- vue的內建元件slotVue元件
- Vue 插槽 廢棄語法Vue
- vue 元件中solt 插槽使用Vue元件
- 詳解Vue中的插槽Vue
- Vue元件深入理解--插槽Vue元件
- vue中的插槽詳解Vue
- vue元件化中slot的用法Vue元件化