美文网首页
插槽学习

插槽学习

作者: 若沫成海 | 来源:发表于2019-06-10 15:28 被阅读0次

    1.插槽
    子组件<child>里的内容不会被渲染,子组件template中加入<slot>元素占位便能渲染父组件<child>标签下的内容,<slot>标签内可放默认展示内容

    <div id='root'>
            <child>
                <p>hello</p>
            </child>
        </div>
        <script>
            Vue.component('child',{
                props:['content'],
                template:'<div><p>helloo</p><slot></slot></div>'
            })
            var vm = new Vue({
                el:'#root'
            })
        </script>
    

    2.具名插槽
    当需要多个插槽时,可以使用<slot>的特性:name

        <div id='root'>
            <child>
                <div class="header" slot='header'>header</div>
                <div class="footer" slot='footer'>footer</div>
            </child>
        </div>
        <script>
            Vue.component('child',{
                props:['content'],
                template:'<div><slot name="header"></slot><p>helloo</p><slot name="footer"></slot></div>'
            })
            var vm = new Vue({
                el:'#root'
            })
        </script>
    

    3.作用域插槽
    调用了两次child组件,因为调用的是同一个子组件,所以显示的内容完全一样。作用域插槽的作用是在每次调用时能有各自的渲染效果。

    <div id="root">
            <child>
                <template slot-scope="props"><!--定义一个插槽,该插槽必须放在template标签内-->
                    <li>{{props.value}}</li><!--定义使用渲染方式-->
                </template>
            </child>
            <child>
                <template slot-scope="props">
                    <h1>{{props.value}}</h1><!--定义不同的渲染方式-->
                </template>
            </child>
        </div>
        <script>
            Vue.component('child',{
                data: function(){
                    return {
                        list:[1,2,3,4]
                    }
                },
                template: `<div>
                                <ul>
                                    <slot v-for="value in list" :value=value>//使用slot占位
                                    </slot>
                                </ul>
                            </div>`
            })
            var vm=new Vue({
                el: '#root'
            })
        </script>
    

    原文:https://blog.csdn.net/willard_cui/article/details/82469114

    相关文章

      网友评论

          本文标题:插槽学习

          本文链接:https://www.haomeiwen.com/subject/gbyzxctx.html