定义好一个组件,如果想插入图片或视频这非常不好的控制应该显示什么,这个时候可以使用插槽插入自定义内容
默认插槽
<Login> <template> <h1>我是插入的内容</h1> </template> </Login >
组件
<slot></slot> <!--插入内容的占位符--> <button @click="login">登录</button>
具名插槽
带名字的插槽,上面写法适合插入一个内容的写法,这种写法可以插入多个内容
适合插入多个内容
<slot name="top"></slot> <!--插入内容的占位符--> <button @click="login">登录</button> <slot name="foot"></slot>
< template v-slot:foot > 另一种写法
<Login> <template> <h1 slot="top">我是上面的内容</h1> <h1>我没有写SLOT不会显示,有两个插槽Vue不知道该放哪个合适</h1> <h1 slot="top">我会追加</h1> <h1 slot="foot">我是底部</h1> </template> </Login>
作用域插槽
作用域插槽可以从子组件返回数据给插槽使用者
子组件
<slot :list="userList"></slot> <!-- 把用户列表传给插槽使用者 :后端名字可以自定义 等号后为传的数据 -->
data() { return { userList: [{id:101,name:'dpc'}, {id:102,name:'cyy'}] } }
插槽所有者
<User> <template slot-scope="getList"> <!--getList可以不用和子组件一样--> {{getList}} </template> </User>
可以通过getList.id拿值