1.具名组件
咱们一个组件里须要多个插槽,就须要用到slot
的name
属性
<!--子组件定义--><div> <header> <slot name="header"></slot> </header> <main> <slot></slot> </main> <footer> <slot name="footer"></slot> </footer></div><!--父组件--><div> <template v-slot:header> <h1>Here might be a page title</h1> </template> <p>A paragraph for the main content.</p> <p>And another one.</p> <template v-slot:footer> <p>Here some contact info</p> </template></div>
2.作用域组件
自 2.6.0 起有所更新。已废除的应用 slot-scope attribute 的语法在这里
有时让插槽内容可能拜访子组件中才有的数据是很有用的
//父组件应用子组件的值<current-user> <template v-slot:default="slotProps"> {{ slotProps.user.firstName }} </template></current-user//子组件向父组件传递值<span> <slot v-bind:user="user"> {{ user.lastName }} </slot></span>
案例
子组件定义插槽
<template> <div> <!--具名插槽--> <slot name="title"/> <!--作用域插槽 向父组件传递值--> <slot name="item" v-bind="{value:'vue'}" /> </div></template><script>export default { name:"test"}</script><style></style>
父组件应用子组件插槽
<template><div id="app"> {{msg}} <Solt> <template v-slot:title> <h1>这段内容会填充到子组件中</h1> </template> <!--应用props来接管{value:'vue'}值--> <template v-slot:item="props"> <p>======={{props}}</p> </template> </Solt> </div></template><script>//导入子组件import Solt from './components/Solt'export default { name: 'App', data() { return { msg: "hello 入门小站", name:"name", type:"入门", list:['入门','小站'], view:true } }, methods: { }, components: { Solt //必须要定义子组件 }}</script><style>#app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px;}</style>
源码:https://github.com/mifunc/rum...