[Vue] Computed property XXX was assigned to but it has no setter.
项目过程中经常遇到如下问题:
[Vue warn]: Computed property "CurrentStep" was assigned to but it has no setter. 意思是:计算属性 CurrentStep 被赋值了,但此它并未定义 set方法 ,故出现上面错误提示。
vue官网中关于计算属性的示例是这样的:
var vm = new Vue({data: { a: 1 },computed: {// 仅读取, 计算属性的 getteraDouble: function () {return this.a * 2},// 读取和设置, 计算属性的 getter 和 setteraPlus: {get: function () {return this.a + 1},set: function (v) {this.a = v - 1}}}
})
vm.aPlus // => 2
vm.aPlus = 3
vm.a // => 2
vm.aDouble // => 4复制代码
可以看出:aDouble计算属性默认只有get函数,仅支持读取;而aPlus计算属性声明了get 和 set函数,支持读取和设置。故当出现上错误提示时,只需按照aPlus计算属性声明方式修正即可解决问题。
注意:如果你为一个计算属性使用了箭头函数,则 this 不会指向这个组件的实例,不过你仍然可以将其实例作为函数的第一个参数来访问。:
computed: {aDouble: vm => vm.a * 2
}
复制代码
不过我还有个问题:如果computed中依赖的不是data中的属性,而是prop中的属性,我们又应该如何处理呢?
答案:由于vue中prop的属性是父组件传递给子组件值,我们并不建议直接操作prop中的属性。你可以在data中添加一个新的映射属性(作为prop属性的映射),并使用watch达成映射。
附上代码如下:
props: ['step'],
data(){return {stepMap: null}
},
computed:{currentStep:{get(){return this.stepMap},set(v){this.stepMap = v}}
},
watch: {step(v) {this.stepMap = v}
}
复制代码
希望能帮助大家,thanks !!!
[Vue] Computed property XXX was assigned to but it has no setter.相关推荐
- vuex报错Computed property “xxx“ was assigned to but it has no setter.
当使用vuex存储数据时,常常有这样的需求:输入框显示并动态修改state中的数据. 我们第一个反应就是使用v-model直接绑定state中的数据,虽然确实可以显示和修改,但是控制台会报错,所以不能 ...
- Computed property XXX was assigned to but it has no setter
报错视图: 原因: 组件中v-model="XXX",而XXX是vuex state中的某个变量 vuex中是单项流,v-model是vue中的双向绑定,但是在computed中只 ...
- Computed property “XXX“ was assigned to but it has no setter
报错原因:vuex 1.组件中v-model="XXX",而XXX是vuex state中的某个变量 2.vuex中是单项流,v-model是vue中的双向绑定,在computed ...
- Vue warn]: Computed property XXXl was assigned to but it has no setter.错误
Vue warn]: Computed property "XXXl" was assigned to but it has no setter.错误 解决:直接修改HTML中的v ...
- 前端开发:Vue报错Computed property “show“ was assigned to but it has no setter的解决方法
前言 在前端开发中,使用Vue的时候关于组件使用是非常常见的操作,而且也会遇到各式各样的问题,尤其是刚接触前端开发的开发者.本篇博文分享一下在封装关于Vue的组件的时候,通过计算属性监听父子组件传值提 ...
- [Vue warn]: Computed property “userInfo“ was assigned to but it has no setter.
[Vue warn]: Computed property "userInfo" was assigned to but it has no setter. 一.报错信息 二.报错 ...
- vue 的计算属性报错Computed property “disa“ was assigned to but it has no setter.
原因: vue的计算属性不能设置,只能读取 解决:
- vue写前端出现错误:[Vue warn]: Computed property “editableTabs“ was assigned to but it has no setter.
源代码: computed:{//动态监控,返回tab的信息editableTabs:{get() {return this.$store.state.menus.editableTabs;}},ed ...
- [Vue warn]: Computed property tabs was assigned to but it has no setter.
为什么80%的码农都做不了架构师?>>> 这种问题一般是tabs这个计算属性没有设置set方法导致该报错,因为在methods方法里面有对tabs赋值的操作.只要添加一个 se ...
最新文章
- java选择题答案_Java习题附答案
- vue-cli脚手架的.babelrc文件
- C语言指针用得好犹如神助!这些使用技巧值得收藏
- 9-13 ruby环境准备
- mysql 分区表 限制_Mysql分区表使用的一些限制和需要注意的地方-阿里云开发者社区...
- C#中的多线程:如何将函数名称传递给另一个函数来启动新线程?
- Win11显卡fps很低怎么办?Win11显卡fps很低的解决方法
- Windows核心编程_锁屏
- ajax只能局部刷新吗,ajax有哪几种方法可以实现局部刷新
- Siri 和谷歌竟然暗藏《复联4》彩蛋!
- 说说 PWA 和微信小程序--Progressive Web App
- python 爬虫论_python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)
- 百度运维部农场,绿色畅想
- 基于VUE和Node.js的医院挂号预约管理系统
- 计算机管理文件破坏怎么办,文件损坏,教您电脑文件损坏怎么修复
- 【定位设备】蓝牙信标接近距离的计算方式及其部署原则
- VMware Workstation虚拟机设置联网(Linux)
- (4)数据分析-正态性检验与方差齐性检验
- PDFbox的head is mandatory问题
- 如何在VMware上快速安装ROS