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了

猜你喜欢

转载自www.cnblogs.com/lyt0207/p/11907183.html