This time I will show you how to use placeholders in Vue, what are the precautions when using placeholders in Vue, the following is a practical case, let’s take a look .
Simply put, it is a placeholder. It will help you occupy the position. When you need it, you can directly pass in the html and it will display it for you.
Some people also say: props can pass data from parent components to child components, and slots can pass html from parent components to child components. So how to achieve it?
Single slot:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <p id="app"> <h1>我是父组件的标题</h1> <my-component> <p>这是一些初始内容</p> <p>这是更多的初始内容</p> </my-component> </p> <script type="text/javascript"> Vue.component('my-component', { // 有效,因为是在正确的作用域内 template: '<p>\ <h2>我是子组件的标题</h2>\ <slot>只有在没有要分发的内容时才会显示。</slot>\ </p>', data: function () { return { } } }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
Write the slot tag in the template in the component, and pass in html when the parent calls the child component.
Named Slot:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <p id="app"> <my-component> <h1 slot="header">这里可能是一个页面标题</h1> <p>主要内容的一个段落。</p> <p>另一个主要段落。</p> <p slot="footer">这里有一些联系信息</p> </my-component> </p> <script type="text/javascript"> Vue.component('my-component', { // 有效,因为是在正确的作用域内 template: '<p class="container">\ <header>\ <slot name="header"></slot>\ </header>\ <main>\ <slot></slot>\ </main>\ <footer>\ <slot name="footer"></slot>\ </footer>\ </p>', data: function () { return { } } }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
Named slots, as the name implies, when there are multiple slot tags, you need to give them their own names. When calling the parent component, slot="internal corresponding name" is required. When there is an unnamed slot tag, the parent component The default html code passed in will all be output in the nameless slot tag.
Scope slot
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="vue.min.js"></script> </head> <body> <p id="app"> <!-- 在父级中,具有特殊特性 slot-scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。slot-scope 的值将被用作一个临时变量名,此变量接收从子组件传递过来的 prop 对象: --> <child> <template scope="props"> <span>hello from parent</span><br> <span>{{ props.text }}</span> </template> </child> </p> <script type="text/javascript"> // 在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样: Vue.component('child',{ template:'<ul>' + '<slot text="hello from child"></slot>' + '</ul>', data:function(){ return { } }, }); new Vue({ el:'#app', data:{ msg:'你好啊' } }) </script> </body> </html>
A scoped slot is a special type of slot that is used as a reusable template (to which data can be passed) in place of an already rendered element.
In fact, it is equivalent to getting the props object passed by the child component in the parent component, and then rendering it to the parent component.
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!
Recommended reading:
##How to operate the table to change the content of the table in Element-ui
How to implement the todolist function in YuanshengJS
The above is the detailed content of How to use placeholders in Vue. For more information, please follow other related articles on the PHP Chinese website!