首页 > 其他分享 >Vue 中组件的使用

Vue 中组件的使用

时间:2022-11-17 00:22:06浏览次数:45  
标签:Vcontent Vue name age var template 使用 组件

一、局部组件的使用。

渲染组件-父使用子组件。

1、声子:创建子组件(对象)。

        // 局部组件:声子  挂子 用子
        var Vheader  = {
            template:`
                <div class='head'>
                    我是头部组件
                    <Vbtn></Vbtn>
                </div>`
        };

2、挂子:在父组件中声明,根属性 components:{组件名: 组件对象}。

        // 1.声明局部组件
        var App  = {
            template:`
                <div class='main'>
                </div>
            `,
            data(){
                return {
                }
            },
            components:{
                Vheader,
                Vaside,
                Vcontent
            }
        };

3、在父组件要用的地方使用 <组件名></组件名>。

        // 1.声明局部组件
        var App  = {
            template:`
                <div class='main'>
                    <Vheader />
                    <div class = 'main2'>
                        <Vaside />
                        <Vcontent />
                    </div>
                </div>
            `,
            data(){
                return {
                }
            },
            components:{
                Vheader,
                Vaside,
                Vcontent
            }
        };

注意:在不同的框架中,有的不支持大写字母。例如组件名称为MyHeader,使用时  my-header。

总结:有父、声子、挂子、用子。

二、组件的深入。

1、父子组件传值(父传子)。

1.1、父用子组件的时候通过属性 Prop 传递。

1.2、子要声明 props:['属性名'] 来接收父的值。

1.3、收到的就是自己的了,在 template 中直接用,在 js 中 this.属性名 获取。

总结:父传,子声明。

        var Vcontent = {
            template:`
                <div class="content">我是内容组件
                    <ul>
                        <li v-for='(item,index) in posts'>
                            <h3>{{index}}</h3>
                            <p>{{item.name}}</p>
                            <p>{{item.age}}</p>
                        </li>
                    </ul>
                    <Vbtn @click.native='add'>删除</Vbtn>
                </div>
            `,
            props:['posts'],
            methods:{
                add(){
                    alert(1);
                }
            }
        }

        var App = {
            template:`
                <div class='main' :style='{fontSize:postFontSize+"em"}'>
                    <Vheard @change='chaneHandler' />
                    <div class="main2">
                        <Vaside/>
                        <Vcontent :posts='posts' />
                    </div>
                </div>
            `,
            methods:{
                chaneHandler(){
                    this.postFontSize+=.1;
                }
            },
            data(){
                return{
                    posts:[
                        {"id":1, "name":'张三', "age":23},
                        {"id":2, "name":'李四', "age":20},
                        {"id":3, "name":'王五', "age":26},
                        {"id":4, "name":'赵六', "age":28},
                    ],
                    postFontSize:1.5
                }
            },
            components:{
                Vheard,
                Vaside,
                Vcontent
            }
        }

总结父传子:

  父用子:先声子、挂子、用子。

  父传子:父传子(属性),子声明(接收),就可以当成自己的直接用。

 

三、全局组件的定义。多出使用的公共性功能组件,就可以注册成全局组件,减少冗余代码。

  全局 API Vue.component('组件名',组件对象);

        // 全局组件
        // 第一个参数是组件的名字,第二个参数是options
        Vue.component('Vbtn',{
            template:`<button>按钮</button> `
        });

 

// 1.声明局部组件var App  = {template:`<div class='main'><Vheader /><div class = 'main2'><Vaside /><Vcontent /></div></div>`,data(){return {
}},components:{Vheader,Vaside,Vcontent}};

标签:Vcontent,Vue,name,age,var,template,使用,组件
From: https://www.cnblogs.com/sfwu/p/16898081.html

相关文章