vue3中reactive变量不能赋值的问题:const a=ref(true); a=false报错?

问题描述

本人刚接触前端,属于用到什么学什么的那种,所以基础不是很牢。今天开发中遇到了这个问题,实在搞不懂,前来咨询各位大佬。
在quasar+vue3项目下,控制台报错TypeError: Assignment to constant variable.

相关代码

粘贴代码文本(请勿用截图)

const a =ref(true)
function func(){
  a = false
}

问题出现的环境背景及自己尝试过哪些方法

将a 放进另一个变量中可以正常赋值了

const data = reactive({
  a:true
})
function func(){
  data.a = false
 }

ref和reactive是把数据做可响应处理,那么为什么放进另一个变量中才不会报错,我不太理解
谢谢各位解答

阅读 14.7k
3 个回答

根据vue3文档中ref部分的描述:
接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象具有指向内部值的单个 property .value。
根据mdn上的描述https://developer.mozilla.org...
const 定义一个常量
在题目中const a = ref(true) 根据文档中的说法,想要改变a的值,需要用a.value。
事实证明,a.value = false 是可行的。
感谢“lordGuan”提出的很逗的例子,感谢“未选择的路”让我去看文档。文档确实非常有用,而且不注意你就会疏忽掉一些东西。问题出现的原因也是我基础不扎实导致的,竟然都忘了ref需要.value用

const a = true

老板让a盯着一把钥匙,并且告诉a谁都不能动这把钥匙,雷打不动。老板娘来了让a把钥匙叫出来,但又不能闲着,就给了a一个皮球。a一下就不乐意了,老板的吩咐打死都不行,于是把老板娘锤了一顿。

const a = {
    b: true
}

老板让a盯着一个盒子,这个盒子里放了一把钥匙,并且告诉a谁都不能动这个盒子,雷打不动。老板娘来了使用隔空取物把盒子里的钥匙换成了一个皮球,盒子纹丝不动,a表情严肃的盯着盒子。老板娘笑着离开了。小组长又来了,想用一个鼠标换a盯着的盒子,a一下就不愿意了,把小组长给锤了一顿。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题