Vue学习笔记-作用域插槽
有时候我们希望子组件的内容由父组件决定如何展示,这个时候子组件的数据父组件并不能访问到,而作用域插槽的关键之处就在于,父组件能接收来自子组件的slot传递过来的参数。
<div id="app">
<cpn></cpn>
<cpn>
<!--目的是获取子组件的数据并且按照父组件想要的形式展示-->
<!--为了拿到slot传过来的data,必须用template-->
<template slot-scope="slot">
<!--<span v-for="item in slot.data">{{item}}-</span>-->
<span>{{slot.data.join(' - ')}}-</span>
</template>
</cpn>
</div>
<template id="cpn">
<div style="display: flex;flex-direction: row">
<slot :data="planguage">
<ul>
<li v-for="item in planguage">{{item}}</li>
</ul>
</slot>
</div>
</template>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const cpn = {
template: '#cpn',
data () {
return {
planguage: ['1111', '2222', '3333',' 4444']
}
}
}
const app = new Vue({
el: '#app',
components: {
cpn
}
})
</script>
在父组件使用我们的子组件时,从子组件中拿到数据:
我们通过<template slot-scope="slot">获取到slot属性
在通过slot.data就可以获取到刚才我们传入的data了
不积跬步无以至千里