在vuejs组件中定义数据函数的多种方法

89 阅读3分钟

每个组件都有data 函数methods 作为声明的一部分。

data是一个函数,返回一个对象。

为什么数据必须在组件中声明?

每个组件都有一些要在浏览器中显示的数据,所以data function 代码会返回这些数据。这些数据将被全局的组件方法所访问。

数据功能是否包含从数据库获取的API逻辑?不,获取数据的逻辑应该在组件的方法部分处理。

什么时候调用data函数? Vue在创建组件实例时调用data函数,并返回一个对象,这些数据包括在Vuejs的reactive中,并将实例数据存储为**$data**对象。

关于数据函数的要点

  • 它可以是箭头函数或数据属性或普通的ES5函数
  • 它应该总是返回一个对象
  • 对象属性是可用的,可以使用组件实例进行访问
  • 方法可以在数据函数中被调用
  • 返回的对象包含属性、键和函数调用
Vue.component('About', {
  template: 'About Component',

  data: function() {
    return {
     faq:"Vuej component faqs"    }
  }
});

以下是在vue组件中声明数据函数的不同方法

  • 使用ES6箭头函数的数据
  • 数据对象的返回
  • 数据ES5风格函数

在这篇博文中,我们将通过实例来学习在vuejs组件中定义数据函数的多种方法。

vuejs中的数据箭头函数

箭头函数是在ES6 JavaScript语言中引入的。Vue组件可以用数据箭头函数来声明,如下图所示

箭头函数是使用()=> 语法进行声明的新方式。这些函数内部没有this context。这是什么意思呢?在函数中,this.HelloWorld道具对象没有返回组件道具,**this** 代表当前window 范围而不是组件范围,this.commonenent向控制台抛出以下错误,因为这些都是绑定到父级上下文的。

未发现的类型错误:无法读取未定义的属性'InputBlurExample'。

export default {
    props: ['HelloWorld'],
    data: () => ( {
      name: 'Franc',
      data: this.HelloWorld // undefined
    })
}

return关键字返回数据函数中的对象

同样的方式可以使用隐式返回语法返回

export default {
    props: ['HelloWorld'],
    data: () => ({
      name: 'Franc',
      data: this.HelloWorld // undefined
    })
}

无函数的数据对象

声明了数据对象而不是函数,并且初始化为0值,数据中的属性被多个组件实例共享。

如果这些组件在五个地方使用,每个组件的值都是不同的,这是什么问题?这就是唯一的缺点。

export default {
    props: ['HelloWorld'],
    data:{
      increment:0,
    }
}

数据功能对象

每个组件都共享数据对象,如果你把数据声明为函数,就很容易改变状态。

export default {
    props: ['HelloWorld'],
    data: function(){
        return {increment:0},
    }
}

这就是ES5在javascript中声明函数的方式。

同样可以用少量的编码来修饰

export default {
    props: ['HelloWorld'],
    data: {
        return {increment:0},
    }
}

如何在data函数中调用方法

data函数返回的对象包含的函数可以是实例方法

当你在父子组件中调用其他组件的事件处理程序时,这将非常有用。

在data函数中,将当前使用的vue组件实例存储在一个变量中,然后调用该方法。

export default {
  name: "InputComponent",
  data() {
    var self = this;
    return {
      onClick: function () {
        self.mymethod();
      },
    };
  },

  methods: {
    mymethod: function () {},
  },
};

总结

在这篇博文中,你学到了多种方法来创建一个数据函数并返回一个对象。

我希望你通过这个学到了新的东西。