您的位置:首页 > 产品设计 > UI/UE

vue中data必须是函数

2017-10-08 20:57 183 查看
看了好多博客论坛啥的,我比较笨不是很理解,包括我之前转载的一篇,不过我转载的我是看懂了,今天没事重新过了下官网,下面我们一起看看官网是如何给出解答的,这里面第一个他也用了return,但是和我们说的return不同,这个完全是为了躲避语法报错,我们也可以自己创建vue实例注册组件,然后多个地方同时注册,解释的还是很好的,我这里抛砖引玉下~~~

通过 Vue 构造器传入的各种选项大多数都可以在组件里用。
data
 是一个例外,它必须是函数。实际上,如果你这么做:
Vue.component('my-component', {  template: '<span>{{ message }}</span>',  data: {    message: 'hello'  }})
那么 Vue 会停止,并在控制台发出警告,告诉你在组件中 
data
 必须是一个函数。理解这种规则的存在意义很有帮助,让我们假设用如下方式来绕开 Vue 的警告:
<div id="example-2">  <simple-counter></simple-counter>  <simple-counter></simple-counter>  <simple-counter></simple-counter></div>
var data = { counter: 0 }Vue.component('simple-counter', {  template: '<button v-on:click="counter += 1">{{ counter }}</button>',  // 技术上 data 的确是一个函数了,因此 Vue 不会警告,  // 但是我们返回给每个组件的实例却引用了同一个 data 对象  data: function () {    return data  }})new Vue({  el: '#example-2'})
9 9 9

由于这三个组件共享了同一个 
data
,因此增加一个 counter 会影响所有组件!这不对。我们可以通过为每个组件返回全新的 data 对象来解决这个问题:
data: function () {  return {    counter: 0  }}
现在每个 counter 都有它自己内部的状态了:

1 5 7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐