Vue3中reactive对从接口中接收到的数组做响应式处理

2022-11-03  本文已影响0人  博尔茨杰
  1. 把用reactive来定义的数组换为ref进行定义
setup(){
    let data = ref([])
    ...
    request.get("/***).then(res => {
        data.value = res.data.records
    })
    return { data }
}
  1. 原来定义的是一个数组所以使用push方法将接收到的内容传进数组中,但是需要将数据展开才能传进去,需要在数据前加三个小数点
setup(){
    let data = reactive([])
    ...
    request.get("/***").then(res => {
      data.push = ...res.data.records
    })
 
    return { data }
}
  1. 在原来的reactive里面再封装一层{ }
setup(){
    let data = reactive({
        arr : []
    })

    request.get("/***").then(res => {
        data.arr = res.data.records
    })
    return { data }
}

总结一下 ref 和 reactive 的区别:

ref 是用来定义基本类型和数组类型和对象类型的,使用ref定义数组或对象类型时内部还是会调用reactive 转为代理对象
reactive 一般用来定义对象类型,它是通过使用Proxy(代理模式)来实现响应式, 并通过Reflect操作源对象内部的数据。

注意reactive数据直接赋值将失去响应式
var dataList = reactive([]);

window["appCallJsListInit"] = (e) => {
       dataList = e
};

参考:链接1
参考:链接2

上一篇下一篇

猜你喜欢

热点阅读