vue3引用类型和基础类型深度克隆

深度克隆失效的一个例子

javascript 复制代码
import { cloneDeep } from "lodash";
import { ref } from "vue";

const navArr = ref([
    "recommend",
    "hot",
    "new",
])
const list1: any = ref([])
const list2: any = ref([])
const list3: any = ref([])

for (let index = 0; index < navArr.value.length; index++) {
    const ele = navArr.value[index];
    list1.value[ele] = {
        list: [],
        currentIndex: 0,
        pageObj: {
            navActive: ele,
            page: 1,
            size: 4,
        }
    }
}

console.log("list1", list1.value);

list2.value = cloneDeep(list1.value)

console.log("list2", list2.value);

list3.value = JSON.parse(JSON.stringify(list1.value))

console.log("list3", list3.value);

原因是list1和list2初始值用中括号[],但是navArr遍历的时候是对象的方式赋值,

虽然不影响list1赋值,但是类型错了,导致深度克隆会失败,

改成 花括号 对象方式初始值

修改后

相关推荐
LYFlied34 分钟前
WebGPU与浏览器边缘智能:开启去中心化AI新纪元
前端·人工智能·大模型·去中心化·区块链
Setsuna_F_Seiei41 分钟前
2025 年度总结:人生重要阶段的一年
前端·程序员·年终总结
model20051 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
han_2 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
aPurpleBerry2 小时前
React 01 目录结构、tsx 语法
前端·react.js
jayaccc2 小时前
微前端架构实战全解析
前端·架构
qingyun9892 小时前
Web Components 实战:创建自定义比例条组件
前端
前端小超超2 小时前
ionic + vue3 + capacitor遇到backButton问题
前端·javascript·vue.js
GIS之路2 小时前
GDAL 空间关系解析
前端
布列瑟农的星空3 小时前
WebAssembly入门(一)——Emscripten
前端·后端