详解在Vue组件中的data为什么只能返回函数

 通过Vue构造器传入的各种选项大多数都可以在组件里用,唯独只有data选项有区别,在Vue构造器中data返回的是对象,但是在组建中必须返回一个函数。why?这篇文章主要介绍了详解在Vue组件中的data为什么只能返回函数,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧    

先来看下面一个例子:

HTML:

      

JS:var data = { counter: 0 }Vue.component('simple-counter', {  template: '',  // 技术上 data 的确是一个函数了,因此 Vue 不会警告,  // 但是我们返回给每个组件的实例的却引用了同一个data对象  data : data})new Vue({  el: '#example-2'})

登录后复制

这段代码本来的想法是,点击某个按钮然后那个按钮的值加一,但是因为所有按钮都使用同一个counter值,导致每次点击一个按钮,其他按钮的只也会加一,这是不允许的,每个组件模板不应该相互影响。那么如何解决这个问题呢?我们可以通过为每个组件返回全新的 data 对象来解决这个问题,例如:

登录后复制

data: function () {  return {    counter: 0  }}

登录后复制

那这个其中原理是什么?这个其实不关Vue的事情,这是js本身的一种特性造成的。当两个实例继承同一个对象的时候么当你修改其中一个属性的时候,另外一个实例也会跟着改。例如:

登录后复制

var MyComponent = function() {}MyComponent.prototype.data = {  a: 1,  b: 2,}var component1 = new MyComponent()var component2 = new MyComponent()component1.data.a === component2.data.a // truecomponent1.data.b = 5component2.data.b // 5

登录后复制

这是js继承机制决定的,不懂的童鞋可以看我另一篇关于js继承的文章

总结:
      其实ES5继承是非常恶心的,所以ES6对于继承做了改进,引进了class, extends, super概念,想了解的童鞋去了解一下吧

相关推荐:

vue的data为何是个函数

vue组件中data必须要写成函数的原因

立即学习“前端免费学习笔记(深入)”;

vue中data必须是函数

以上就是详解在Vue组件中的data为什么只能返回函数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2775802.html

(0)
上一篇 2025年3月8日 14:33:46
下一篇 2025年2月24日 22:30:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue.js如何实现组件的双向绑定

    这篇文章主要介绍了vue.js如何实现组件的双向绑定,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 概述:组件通信通过props,props默认单向绑定(父->子),除了发布订阅事件,另一个通信的方法双向…

    2025年3月8日
    200
  • vue.js实现操作class的方法

    这次给大家带来vue.js实现操作class的方法,vue.js操作class的注意事项有哪些,下面就是实战案例,一起来看一下。 最近使用vue需要实现一个点餐选择商品规格的页面,需要通过vue动态的给被点击的元素添加class名字,使其变…

    2025年3月8日
    200
  • Vue.js的基础知识点总结

    这次给大家带来Vue.js的基础知识点总结,使用Vue.js基础知识的注意事项有哪些,下面就是实战案例,一起来看一下。 对大部分人来说,掌握Vue.js基本的几个API后就已经能够正常地开发前端网站。但如果你想更加高效地使用Vue来开发,成…

    编程技术 2025年3月8日
    200
  • vuejs项目打包后可能会出现的问题有哪些

    这次给大家带来vuejs项目打包后可能会出现的问题有哪些,vuejs项目打包的注意事项有哪些,下面就是实战案例,一起来看一下。 一:使用CDN资源 我们在打包时,会将package.json里,dependencies对象里插件打包起来,我…

    编程技术 2025年3月8日
    200
  • vue.js中created方法的使用详解

    这次给大家带来vue.js中created方法的使用详解,使用vue.js中created方法的注意事项有哪些,下面就是实战案例,一起来看一下。 这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数。一个vue实例被生成后还…

    2025年3月8日 编程技术
    200
  • 使用Angularjs和Vue.js对比

    本篇文章介绍的内容是关于使用Angularjs和Vue.js对比 ,现在分享给大家,有需要的朋友可以参考一下 使用Angularjs和Vue.js对比 之前项目都是使用Angularjs,(注明此处主要讲Angularjs 1)在初步使用V…

    编程技术 2025年3月8日
    200
  • Vue打包优化之code spliting_vue.js

    这篇文章主要介绍了详解vue打包优化之code spliting,现在分享给大家,有需要的朋友参考一下 在http1的时代,比较常见的一种性能优化就是合并http的请求数量,通常我们会把许多js代码合并在一起,但是如果一个js包体积特别大的…

    2025年3月8日 编程技术
    200
  • vue.js中npm安装教程图解

    这篇文章主要介绍了vue.js中npm安装教程图解,现在分享给大家,需要的朋友可以参考下 首先理清nodejs和npm的关系: node.js是javascript的一种运行环境,是对Google V8引擎进行的封装。是一个服务器端的jav…

    2025年3月8日 编程技术
    200
  • Vue.js提升必知的几点总结

    这次给大家带来Vue.js提升必知的几点总结,Vue.js提升的注意事项有哪些,下面就是实战案例,一起来看一下。 第一招:化繁为简的Watchers 场景还原: created(){ this.fetchPostList()},watch:…

    编程技术 2025年3月8日
    200
  • 在vuejs中使用v-show不起作用的原因有哪些

    这次给大家带来在vuejs中使用v-show不起作用的原因有哪些,在vuejs中使用v-show的注意事项有哪些,下面就是实战案例,一起来看一下。 1.官网概念描述 v-if 是’真正的’条件渲染,因为它会确保在切换…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论