1. 程式人生 > 其它 >使用slot,讓元件更具有複用性

使用slot,讓元件更具有複用性

技術標籤:筆記

1.普通子元件

問題:比如在下面中的外掛,我們想在其中一個下面新增按鈕,其他的不新增,下面這種是實現不了的,所以我們需要插條slot來實現。
插條理解:抽取不同,保留共性
更改之前的:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<cpn><
/cpn> <cpn></cpn> <cpn></cpn> <cpn></cpn> </div> <template id="cpn"> <div> <h2>我是元件</h2> <p>我是內容</p> </div> </template> <script type="text/javascript" src="../js/vue.min.js"
></script> <script type="text/javascript"> const app = new Vue({ el:'#app', data:{ message:'你好啊' }, components:{ cpn:{ template:'#cpn' } } }) </script> </body> </html>

在這裡插入圖片描述

加了插條以後的

1.基本插條用法

<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> <cpn><button>按鈕</button></cpn> <cpn><i>我是插條內容</i></cpn> <cpn></cpn> <cpn></cpn> </div> <template id="cpn"> <div> <h2>我是元件</h2> <p>我是內容</p> <!-- //插條可以指定預設值 --> <slot>我是插條預設值</slot> </div> </template> <script type="text/javascript" src="../js/vue.min.js"></script> <script type="text/javascript"> const app = new Vue({ el:'#app', data:{ message:'你好啊' }, components:{ cpn:{ template:'#cpn' } } }) </script> </body> </html>

在這裡插入圖片描述

2.具名插條(給插條一個name)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<cpn>標題</cpn>
			<cpn><button slot="left">按鈕</button></cpn>
			<cpn></cpn>
			<cpn></cpn>
		</div>
		<template id="cpn">
			<div>
				<!-- //插條可以指定預設值 -->
				<slot name="left">我是左邊預設值</slot>
				<slot name="center">我是中間預設值</slot>
				<slot name="right">我是右邊預設值</slot>
				<slot>我是沒有name的預設值</slot>
			</div>
		</template>
		<script type="text/javascript" src="../js/vue.min.js"></script>
		<script type="text/javascript">
			const app = new Vue({
				el:'#app',
				data:{
					message:'你好啊'
				},
				components:{
					cpn:{
						template:'#cpn'
					}
				}
			})
			
		</script>
	</body>
</html>

在這裡插入圖片描述