Vue3中使用reactive时是否有替换整个对象的简写方式?
使用Vue的reactive时如何直接替换整个对象?
reactive是对原始对象创建响应式代理,不能直接替换整个代理对象(替换后原响应式关联会失效),但可以通过以下方式实现类似ref的批量赋值效果:
外层包裹一个对象
给reactive对象套一层包含value属性的外层结构,这样就能通过修改外层的value来直接替换整个目标对象:let state = reactive({ value: { id: '', name: '', status: 0, } }) onResult(() => { state.value = { id: '1', name: 'Name', status: 1 } })使用Object.assign合并属性
把新对象的所有属性合并到原reactive对象上,既保留响应式,又能一次性更新所有字段:let state = reactive({ id: '', name: '', status: 0, }) onResult(() => { Object.assign(state, { id: '1', name: 'Name', status: 1 }) })
另外,如果你的场景更倾向于直接替换整个对象,其实直接用ref会更贴合需求——ref本身就支持通过.value直接替换值,尤其是当对象结构可能变动时,ref的灵活性更高:
let state = ref({ id: '', name: '', status: 0, }) onResult(() => { state.value = { id: '1', name: 'Name', status: 1 } })
内容的提问来源于stack exchange,提问作者Non404
相关产品推荐
相关产品推荐

