Vue3_对响应式对象解构赋值之后失去响应性

官网toRefs() :响应式 API:工具函数 | Vue.js

toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref,请改用 toRef。

javascript 复制代码
setup(){

    const state = reactive({
        name:"张三"
        age:14
    })

    const stateAsToRefs = toRefs(state)
    //stateAsToRefs
    /*
    {
        name:Ref<string>
        age:Ref<number>
    
    }
    
    */
    state.name = "李四"
    console.log(stateAsToRefs.name.value)//李四
    
    stateAsToRefs.name.value = "张三"
    console.log(state.name)//张三
    
    const {name,age} = stateAsToRefs 

    return {name , age }

}
javascript 复制代码
<script setup>

function useFeatureX() {
  const state = reactive({
    foo: 1,
    bar: 2
  })

  // ...基于状态的操作逻辑

  // 在返回时都转为 ref
  return toRefs(state)
}

// 可以解构而不会失去响应性
const { foo, bar } = useFeatureX()

</script>

1 当对一个响应式对象进行es6的解构赋值之后,它将失去响应性

可以看到点击修改name的时候,数据变了,但是页面却没有更新。

2 可以使用vue的toRefs()方法,对对象进行解构

即可看到数据修改了以后,页面做出了响应

相关推荐
孟健1 小时前
Claude Code 同需求写两版对比:装不装 frontend-design 差多远?
前端·ai编程·claude
OpsEye1 小时前
大模型 Token 计量不准,是什么原因,怎么解决??
javascript·ai编程
梦de天空一米16883 小时前
【一个重复id让游戏卡在62%,聊聊配置表检查】
前端
ryn483983 小时前
01 一个功能模块,怎么分层才不乱
前端·ai编程·claude
Amos_Web3 小时前
通过 Rspack 源码学 Rust(五):读懂 Result 与问号运算符的错误返回
前端
杨航 AI3 小时前
JEV的用法
java·前端·数据库
Amos_Web3 小时前
Rspack 源码解析(三十五):rspack_error 如何用 miette 渲染带源码定位的错误链
前端
去伪存真3 小时前
高敏资产场景下的大模型协同设计架构
前端·agent
修炼的dance3 小时前
OCR预处理测了108组,纠斜去噪有用,坑在顺序和力度
前端
疯华整猫3 小时前
Android 16 后台常驻适配:用 Trae 搭一套“前台服务 + 加急 Job”的可存活架构
前端