昨天在调试的时候发现的问题,关于data和return data,里面的数据都可以调用啊

data: {name:libai
},methods: {function1(){
}
}
---------------------return data(){name: libai
},methods:{function1(){
}
}

假如我在函数里面调用,this.name都是可以调用到的。但是昨天在用一个组件的时候,根据例子用到了render模板,其中如果用的是data这种方式,调用this.funtion1(),显示未定义,但是如果是return data 就可以调用到this.function1,想知道这俩区别是什么?
实际代码

data(){return {
{
align: 'center',
title: '删除任务',
render: (h, params) => {return h('div', [
h('i-button', {
props: {
type: 'error',
size: 'small',
},
style: {
marginRight: '5px'},on: {
click: () => {this.remove(params.index)
axios({
method: 'post',
url: '/delete_graph/',
data: Qs.stringify({'delete_name':params.row.name})
})
}
}
}, 'Delete')
])
}
}
}
}

这部分,如果不用return data click事件中this.remove函数是undefined。这里并不是组件把,是render函数的原因吗

回答

官网有明确的解释,买QQ靓号地图链接

When defining a component, data must be declared as a function that returns the initial data object, because there will be many instances created using the same definition. If we use a plain object for data, that same object will be shared by reference across all instances created! By providing a data function, every time a new instance is created we can call it to return a fresh copy of the initial data.

也就是在定义component时,必须使用function的方式。

官方文档链接

个人理解:vue是组件化的,在使用每个组件定义的方法和属性(就是data的中各种值)应该具有他的局部作用域即单独组件内部使用,所有函数返回形式,使得每个组件中返回的属性和方法,互不干扰,不知道我的理解是不是对


更多相关文章

  1. 浅谈IOS屏幕刷新ADisplayLink
  2. 【前端】如何在vue项目中的utils.js封装防抖节流函数
  3. 【前端】h5怎么调用手机拍摄上传照片的功能?
  4. Vue一个通用的组件传递点击事件的两种种简单方法
  5. Vue组件为什么data必须是一个函数呢?本文案例详解
  6. PHP创建简单RPC服务案例详解
  7. PHP 服务器组件和变量
  8. Java如何调用Matlab程序
  9. react-redux源码不完全指北

随机推荐

  1. 修改eclipse android 默认debug 签名
  2. 《Android开发从零开始》——9.Activity
  3. Android NullPointerException解决方法
  4. 10个android开源项目
  5. 十大Android IDE工具和应用
  6. Android开发平台Android Studio学习之一(
  7. 【原创】Android锁定横竖屏、splash,全屏
  8. Android常用的基本控件
  9. Android -- 图像处理(信息量超大)
  10. Android中Intent习惯用法