vue中的slot插槽
1.无名插槽
<body> <div id="app"> 123 </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script type="text/javascript"> //注册组件 Vue.component("my-component",{ template:"<span>Hello World!</span>" }) new Vue({ el:"#app", template:"<my-component>123</my-component>" }) </script> </body>
结果显示的是:Hello World!(组件中写的123并不显示)
当使用插槽时
<body>
        <div id="app">
            123
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script type="text/javascript">
            
            //注册组件
            Vue.component("my-component",{
                template:"<span>Hello World!<slot></slot></span>"
            })
            
            new Vue({
                el:"#app",
                template:"<my-component>123</my-component>"
            })
            
        </script>
    </body>
结果显示的是:Hello World!123(组建中写的123显示了)
有<slot></slot>插槽的时候才可以显示自己组件中写的内容。
2.具名插槽
<body>
        <div id="app">
            <my-component>
                <h1 slot="girl">我是女孩</h1>
                <h1 slot="boy">我是男孩</h1>
                <span slot>123</span>
            </my-component>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script type="text/javascript">
            //注册组件
            Vue.component("my-component",{
                template:`
                    <div>
                        <slot name="girl"></slot>
                        <slot name="boy"></slot>
                        <slot></slot>
                    </div>`
            })
            
            new Vue({
                el:"#app"
            })
            
        </script>
    </body>
显示结果:
我是女孩
我是男孩
123
3.作用域插槽
<body>
        <div id="app">
            <my-component>
                <template slot-scope="a">
                    {{a}}
                </template>
            </my-component>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script type="text/javascript">
            //注册组件
            Vue.component("my-component", {
                template: `
                <div>
                    <slot hah="hi"></slot>
                </div>`
            })
            new Vue({
                el: "#app"
            })
        </script>
    </body>
显示结果为:
{ "hah": "hi" }
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号