美文网首页
组件中的data为什么必须是个函数

组件中的data为什么必须是个函数

作者: 63537b720fdb | 来源:发表于2020-07-20 23:29 被阅读0次

1.组件化一个计数器功能

在+button上绑定increase的点击事件,触发increase事件,让counter加1
在-button上绑定decrease的点击事件,触发decrease事件,让counter减1

        <div id="app">
            <cpn1></cpn1>
            <cpn1></cpn1>
            <cpn1></cpn1>           
        </div>
        <template id="cpn1">
            <div>
                <h2>当前计数器:{{counter}}</h2>
                <button @click="increase">+</button>
                <button @click="decrease">-</button>                
            </div>

        </template>
        <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            Vue.component('cpn1',{
                template:'#cpn1',
                data(){
                    return {
                        counter:0
                    }
                },
                methods:{
                    increase(){
                        this.counter++;
                    },
                    decrease(){
                        this.counter--;
                    }
                }
            })
            
            const app = new Vue({
                el: '#app'
            })
        </script>

各个组件化出的计数器互不影响


2.为什么组件中的data必须是个函数

首先:data若是个对象的话,会报错
data是个对象


image.png
image.png

那么手动让data返回的是一个对象


image.png

这么写就相当于data函数返回的都是同一个对象,和下面写法的效果一样


image.png
再测试计数器
三个计数器不会相互独立,操作其中一个全部同时改变。
image.png

这是因为三个Vue组件实例共享的是同一个对象中的数据,所以当数据变化时,所以的Vue实例都同步变化


image.png

所以组件中的data必须是个函数,函数中return出的对象都是独立的,每实例化一个组件,该组件就会获取一个独立的data对象,即三个计数器组件实例获取的是三个return出的data对象,所以三个计数器功能互不影响。

image.png

相关文章

  • vue 组件中的data为什么是一个函数

    组件中 data 为什么是一个函数? 为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 ...

  • 11. 组件中的data以及data为什么必须是函数

    组件中的data保存的是自己的数据,但是这个data必须是个函数,然后返回一个对象的形式 组件中的data为什么必...

  • vue 中的 data 为什么是函数?

    new Vue() 实例中,data可以是直接是一个对象,为什么在vue组件中,data必须是一个函数呢?因为组件...

  • vue相关的知识

    1. 组件的data为什么必须是函数? 组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次...

  • 组件避免冲突

    组件中data为什么是一个函数 子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么...

  • Vue-2

    组件模板的抽离写法 为什么组件data必须是函数

  • vue题库

    为什么vue组件中data必须是一个函数? 组件是可复用的,当复用组件时,由于数据对象指向的是同一个data对象,...

  • vue组件data为什么必须是函数?

    首先看个例子 在new vue()中,data可以直接是一个对象,为什么在vue组件中,data必须是一个函数呢?...

  • vue组件data为什么必须是函数

    首先看个例子 在new vue()中,data可以直接是一个对象,为什么在vue组件中,data必须是一个函数呢?...

  • Vue组件data必须是函数

    Vue组件data必须是函数 一、组件data() 函数 定义一个组件 注册组件Vue.component('cp...

网友评论

      本文标题:组件中的data为什么必须是个函数

      本文链接:https://www.haomeiwen.com/subject/nmiukktx.html