vue组件和vue中的同名问题:

文章介绍了Vue中组件的基本概念,强调组件的复用性和低耦合性。组件命名推荐使用短横线或驼峰式。组件分为全局和局部,全局组件通过`Vue.component`注册,局部组件需在根组件中定义。组件注册需要注意模板的单一根元素规则,`data`必须是函数。文章还讨论了同名问题,指出在data和methods中同名会导致错误。
摘要由CSDN通过智能技术生成

一、组件:

1.组件的概念

通俗的来理解,组件就是一个功能模块,组件是可以复用的vue的一个实列,并且带有一个名字 

考虑的问题:提升组件的复用性,降低组件之间耦合性 加强内聚

2.组件的命名:

(1)短横线命名------>my-component-name

(2)驼峰命名法------>MyComponentName

3.组件分为全局组件和局部组件:

 3.1:全局组件的注册及使用:

可以通过vue.component的方式来定义全局组件,接收两个参数,第一个参数是组件名,第二个参数是一个对象 :Vue.component('组件名', {  })

(1)使用:将驼峰命名的组件转为短横线命名

例如:<MyComponentName /> 转成<my-component-name />

(2)写法:<my-component-name></my-component-name>

                    <my-component-name />

注意:<my-component-name />----->vue2中单闭合会阻断后面的代码,影响其他组件的使用,可放在最后,在vue3中不会影响后面的组件的使用

// 注册组件

Vue.component('myComponent', {

    // 添加模板 -- 模板一定要有唯一的一个根元素

    template: `

    <div>hello</div>

    `

})

//使用

<div id="app">

<my-component></my-component>

</div>

3.2局部组件的注册以及使用

局部组件的需要在根组件中注册 使用components

// 局部组件注册

let vm = new Vue({

    el: "#app",

    data: {

    },

    components: {

        'myComponent': {

            template: `

    <div>

        hello

    </div>

    `

        }

    }

})

//使用

<div id="app">

<my-component></my-component>

</div>

3.3 局部组件的第二种注册方式

<div id="app">

<helloworld/>

</div>

var helloWorld = {

    data: function () {

        return {

            msg: 'Helloween'

        }

    },

    template: `

    <div>

        {{msg}}    

    </div>

    `

}

let vm = new Vue({

    el: "#app",

    data: {

    },

    components: {

        "helloworld": hellWorld

        //helloWorld------>第二种写法

    }

})

4.组件中的属性参数

    data: 组件数据,----->函数

    template: 组件模板内容,

    methods: {}

    wacth: {}

    filter:{}

5.注册组件的注意事项

- 分析函数和普通函数之间的对比

- 组件模板内容必须是单个根元素,也就是只有一个根元素

- 组件模板内容可以是模板字符串 -- 是用反引号

- 模板字符串需要浏览器支持(es6中的语法)

- data必须是一个函数,主要是函数可以开辟新的空间,这样组件不会随时更改内容

二、vue中的同名问题:

1.在使用计算属性的时候,函数名和data数据源中的数据可以同名吗?

    可以同名,但data会覆盖methods。并且本就不该同名,同名说明你的命名不规范。覆盖的原因是Props、methods、data、computed、watch都是在initState函数中被初始化的。初始化顺序computed,methods,data,props,本质上这些都是要挂载到this上面的,你如果重名的话,后面出现的属性自然而然会覆盖之前挂载的属性了。如果你的eslint配置比较严格的话,同名是编译不通过的。

2.、vue中data的属性可以和methods中的方法同名吗?为什么?

data中的属性和methods方法重名时会优先执行data中的属性并且报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值