Vue3 reactive() 赋值失效不能响应性问题

172 阅读1分钟

解决方法

1 使用ref

 const form= ref({})
 form.value = {...data}

2 如果是数组的话,可以使用push新增数据

const arr= reactive([])
 arr.push(...[1, 2, 3])

3再封装一层数据(推荐!)即定义属性名,在后期赋值的时候,对属性名进行赋值

但是这样的话在html模板里,使用数据就得state.arr  
所以我们可以用解构将它return出来(script setup 里面 不需要return 结构出来即可)

但是reactive解构出来的数据会丢失响应性  
所以再用 toRefs()方法为它们添加响应性  
最终为:
const state = reactive({
  arr: [],
  form:{}
}); 
state.arr = [1, 2, 3]
state.form = {...data} 

return{ ...toRefs(state), }

//如果是在 script setup 里面 不需要return 结构出来即可

const { form,arr } = toRefs(state)