vue3响应式数据失败,不知道问题在哪

vue3 reactive丢失了响应性。
如下代码所示:

import {ref,reactive} from 'vue'
const  pageNum = ref(-1)
const obj = reactive(
    {
        name:'bajie',
        age:pageNum.value++
    }
)
const handleReactive=()=>{
    obj.name='wukong'
    pageNum.value++

}

上述代码在setup语法糖中,模板上展示,姓名能够更改,但是年龄却没有改变一直显示-1,为什么呢?期待解惑

你修改的是pageNum,又没有修改age,当然一直是-1啊,你应该把obj改成

const obj = reactive(
{
name:'bajie',
age:pageNum
}
)

你在定义obj对象时,使用了pageNum.value++来设置age属性,这就意味着age属性会初始化为-1,而且在代码执行完毕后,pageNum.value的值也会加1,但是年龄的值并没有更改,所以依然显示-1。为了解决这个问题,你可以把pageNum.value++改成pageNum.value,使得每次更改name属性时,age属性也会同步更新。

在 obj 中,age 的值是通过 pageNum.value++ 获取的,而 pageNum 是一个 ref,其初始值为 -1。在对象初始化时,age 的值会被赋为 -1,后续的修改操作不会影响 age 的初始值。因此,无论 pageNum 的值如何变化,age 的值始终为 -1。

如果你希望 obj 中的 age 属性与 pageNum 同步,可以将 age 定义为一个计算属性(computed property),并在其中返回 pageNum.value 的值。例如:

const obj = reactive({
  name: 'bajie',
  get age() {
    return pageNum.value;
  }
});

这样,当 pageNum 的值发生变化时,age 的值也会随之更新。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^