如何在vue中使用slot插槽?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://unpkg.com/vue@2.3.3/dist/vue.js"></script> </head> <body> <div id="app"> <div> <!-- 单slot --> <v-one> <!-- 这里的所有内容会替换掉slot --> <p>初始化段落一</p> <p>初始化段落二</p> </v-one> <!-- 渲染结果 --> <!-- <div> <h2>组件标题</h2> <p>初始化段落一</p> <p>初始化段落二</p> <p>组件段落内容</p> <p>I am one</p> </div> --> <!-- 具名slot --> <v-two> <p slot="nav">我是导航</p> <p slot="main">我是内容</p> <p slot="footer">我是底部</p> </v-two> <!-- 渲染结果 --> <!-- <div> <nav> <p>我是导航</p> </nav> <main> <p>我是内容</p> </main> <footer> <p>我是底部</p> </footer> </div> --> <!-- 作用域插槽 --> <v-three> <!-- 父组件默认无法使用子组件数据 --> <template scope="props"> <p>{{props.text}}</p> </template> </v-three> <!-- 渲染结果 --> <!-- <div><p>I am three</p></div> --> </div> </div> <template id="one"> <div> <h2>组件标题</h2> <slot></slot> <p>组件段落内容</p> <p>{{one}}</p> </div> </template> <!-- 具名slot --> <template id="two"> <div> <nav> <slot name="nav"></slot> </nav> <main> <slot name="main"></slot> </main> <footer> <slot name="footer"></slot> </footer> </div> </template> <!-- 作用域插槽 --> <template id="three"> <div> <!-- 把数据传递给slot,这样父组件也可以访问three这个组件的数据 --> <slot :text="three"></slot> </div> </template> <script> new Vue({ el: '#app', components: { 'v-one': { template: '#one', data() { return { 'one': 'I am one' } } }, 'v-two': { template: '#two', data() { return { 'two': 'I am two' } } }, 'v-three': { template: '#three', data() { return { 'three': 'I am three' } } } } }); </script> </body> </html>
单个slot使用最简单,也是最常用的,当我们定义了一个子组件,父组件在使用的这个组件的时候,想在内部自定义一些初始化数据,这时候就可以用slot实现。
具名slot只是给slot加了name属性,在使用的时候可以引入多个。
作用域slot就比较强大了,我们知道子组件的数据,在父组件中是无法使用的,但是通过官方提供的扩展,可以轻松实现这一点。
渲染后效果图,可以直接自己在浏览器运行查看效果
关于如何在vue中使用slot插槽问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。