vue报类似警告Computed property "isLoading" was assigned to but it has no setter
一、原因:一个计算属性,当计算传入的是一个函数,或者传入的是一个对象,而没有设置 setter,也就是 set 属性,当你尝试直接该改变这个这个计算属性的值,都会报这个警告,vuex还会出现通过commit提交修改vuex值的警告的情况。
参考文档:

二、常见导致该错误的写法
(1)计算属性中传入的是对象和方法,直接对计算属性进行赋值会导致错误
比如:
<template>
<div>
<input v-model='change'/>
</div>
</template> <script>
export default {
data () {
return {
a: ''
}
},
computed: {
change () {
return this.a
}
}
}
</script>
结合vuex比如:
<template>
<div>
<input v-model='change'/>
</div>
</template> <script>
export default {
data () {
return {
}
},
computed: {
change () {
return this.$store.state.val
}
}
}
</script>
<template>
<div>
<input v-model='change'/>
</div>
</template> <script>
export default {
data () {
return {
a: ''
}
},
computed: {
...mapState({
// 获取vuex中某个对象的属性值给页面展示用,页面双向绑定也会更新计算属性
change: state => state.object.change
})
}
}
</script>
<template>
<div>
<div @click='change()'>点我</div>
</div>
</template> <script>
export default {
data () {
return { }
},
computed: {
...mapState({
// 获取vuex中某个对象的属性值给页面展示用
change: state => state.object.change
})
},
method: {
change () {
this.change = '赋值'
}
}
}
</script>
三、解决方法
(1)将计算属性转成一个对象,使用getter与setter
<div>
<input v-model='change'/>
</div>
</template> <script>
export default {
data () {
return {
a: ''
}
},
computed: {
//change () {
// return this.a
//} change :{ // getter 将值赋给change
get: function () {
return this.a
},
// setter 获取改变后的值并设置给a
set: function (newValue) {
this.a = newValue;
}
}
}
}
</script>
(2)vuex获取所需对象而不是具体的属性值,后面进行赋值的操作也会更改vuex中的值(对象按值传递)
<template>
<div>
<!--双向绑定会改变vuex中change的值,官方建议通过commit的方式改变vuex值-->
<input v-model='object.change'>
<div @click='change()'>点我</div>
</div>
</template> <script>
export default {
data () {
return { }
},
computed: {
...mapState({
// 获取vuex中某个对象的属性值给页面展示用
//change: state => state.object.change
object: state => state.object
})
},
method: {
change () {
this.object.change = '赋值' // 同步修改了vuex值
this.change = this.object.change
}
}
}
</script>
扩展:
一、vue报错Error in mounted hook: "TypeError: handlers[i].call is not a function"
原因:钩子函数书写错误或者钩子函数中使用了未定义的方法
vue报类似警告Computed property "isLoading" was assigned to but it has no setter的更多相关文章
- vue store获取值时 Computed property "activeTag" was assigned to but it has no setter.
出现原因: element-ui中 el-tab绑定的值在切换tab时会自动修改 而activeTag是从store中获取的值,不能直接修改 要添加给它绑定上set <el-tabs cla ...
- vue 报错 Cannot read property '__ob__' of undefined的解决方法
记不清第n次遇到这个错误了,但是脑子就是不好用,记不住解决办法啊,每次都要找好久才能找到错误,网上还一篇篇的全是错误答案......所以写篇随笔,记录下,方便大家也方便我自己. 网上有人说是组件循环了 ...
- Vue报错Cannot read property 'split' of undefined
今天在项目中处理后端返回的字符串需要使用split做一个字符串转数组的处理,之前项目都运行得好好的,今天突然出问题了,然后面向百度编程了一波,如果你也是用的异步向后端发送请求,可能你的问题和我一样,继 ...
- Vue——解决报错 Computed property "****" was assigned to but it has no setter.
在最近的项目中遇到了如下的警告信息: [Vue warn]: Computed property " currentStep" was assigned to but it has ...
- vue报错信息
1.Property or method "xxx" is not defined on the instance but referenced during render. 原因 ...
- vue 源码解析computed
计算属性 VS 侦听属性 Vue 的组件对象支持了计算属性 computed 和侦听属性 watch 2 个选项,很多同学不了解什么时候该用 computed 什么时候该用 watch.先不回答这个问 ...
- vue中watch和computed为什么能监听到数据的改变以及不同之处
先来个流程图,水平有限,凑活看吧-_-|| 首先在创建一个Vue应用时: var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } ...
- 浅谈Vue中计算属性computed的实现原理
虽然目前的技术栈已由Vue转到了React,但从之前使用Vue开发的多个项目实际经历来看还是非常愉悦的,Vue文档清晰规范,api设计简洁高效,对前端开发人员友好,上手快,甚至个人认为在很多场景使用V ...
- vue报错 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent c ...
随机推荐
- kotlin 泛型中类型投射
fun main(arg: Array<String>) { var ints:Array<Int> = arrayOf(, , ) val any =Array<Any ...
- Web Service 实例基于Socket创建Web服务
ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp so ...
- 关于ios在H5页面长按识别二维码无效
环境 框架: vue 操作系统: ios 解决 如果你的vue-router用了mode:history: 把它去掉用默认的就OK了
- android设置gps自动开启
1.第一种方法 private void toggleGPS() { Intent gpsIntent = new Intent(); gpsIntent.setClassName("com ...
- distinct 排除重复 函数
select count(distinct uid) from ib_user_settings; 参考: http://www.w3school.com.cn/sql/sql_distinct.as ...
- Ubuntu 修改登录界面,使用root用户登录
修改: sudo vi /etc/pam.d/gdm-autologin注释行 "auth requied pam_succeed_if.so user != root quiet succ ...
- Hackergame2019 web
前几天跟着几个大佬一起看了看中科大的Hackergame2019,这个比赛主要针对的是新手,激发新生对CTF比赛的兴趣,虽然我已经大三了,但实在是因为我过于five,也只能帮大佬打打杂,这里把自己做的 ...
- vue组件库element-ui 的Table内容显示不更新
一.问题原因: 因为数组直接赋值不能被 Object.defineProperty 检测到. 二.解决方法 所以应该要使用this.$set(‘对象名’,要修改的属性名,属性值),这样新添加的属性值 ...
- Golang中string和[]byte的对比
golang string和[]byte的对比 为啥string和[]byte类型转换需要一定的代价? 为啥内置函数copy会有一种特殊情况copy(dst []byte, src string) i ...
- 一次记录 java非web项目部署到linux
1.生成可执行jar 运行提示没有主清单属性 一番查找原因:是因为将项目生成jar包的时候,生成的MANIFEST.MF没有MAIN-CLASS,这里加上就可以了,后面的是项目启动类的完整类名 当然还 ...