您好,登錄后才能下訂單哦!
vue 使用lodash如何實(shí)現(xiàn)對(duì)象數(shù)組的深拷貝?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
<template> <div></div> </template> <script> export default { mounted() { this.init(); }, methods: { init() { let lodash = require('lodash'); let obj1 = { a: 1, b: { f: { g: 1 } }, c: [1, 2, 3], h: () => { return 123; }, k: undefined }; let obj2 = lodash.cloneDeep(obj1); obj2.b.f.g = 2; obj2.c = [1, 2]; obj2.h = 1; console.log(obj1); console.log(obj2); } } }; </script>
如果本篇文章對(duì)你有幫助的話,很高興能夠幫助上你。
補(bǔ)充知識(shí):vue iview上傳多文件只發(fā)送一次ajax請(qǐng)求,并根據(jù)上傳進(jìn)度顯示上傳進(jìn)度條
前言
基于iview的上傳組件(Upload)以及進(jìn)度條組件(Progress)
思路
使用Upload組件提供的上傳文件之前的鉤子,將所有上傳文件攔截下來(lái),保存在本地臨時(shí)數(shù)組,使用axios來(lái)進(jìn)行上傳
完整示例
進(jìn)度條部分,請(qǐng)上傳一個(gè)大文件來(lái)查看效果
<template> <Form :model="formData" :label-width="80"> <FormItem class="upload" label="上傳文件"> <Upload :before-upload="handleUpload" :action="''" :multiple="true" > <Button icon="ios-cloud-upload-outline">請(qǐng)選擇附件</Button> </Upload> <!-- 進(jìn)度條 --> <Progress v-if="upload.fileProgressShow" :percent="upload.fileProgress" /> <!-- 顯示列表 --> <ul> <li v-for="(item, index) of formData.dispalyFile" :key="index" > <span>{{ item.name }}</span> <Icon type="md-close" @click="handleRemove(index)" /> </li> </ul> </FormItem> </Form> </template> <script> import axios from 'axios'; export default { data() { return { formData: { dispalyFile: [] // 臨時(shí)數(shù)組,同時(shí)用于顯示在頁(yè)面 }, // 上傳配置 upload: { look: true, // 控制多文件上傳,只觸發(fā)一次ajax請(qǐng)求 fileProgressShow: false, // 進(jìn)度條 fileProgress: 0 // 進(jìn)度條進(jìn)度 } }; }, methods: { handleUpload(selectFile) { // 臨時(shí)數(shù)組,同時(shí)用于顯示在頁(yè)面 this.formData.dispalyFile.push(selectFile) // 控制多文件上傳,只觸發(fā)一次ajax請(qǐng)求 if (this.upload.look) { this.upload.look = false; // 延遲請(qǐng)求,等待所有文件都從本地讀取完畢 setTimeout(() => { let formData = new FormData(); this.formData.dispalyFile.map(item => { // files為后臺(tái)接收參數(shù) // []為多文件數(shù)組 formData.append('files[]', item); }) axios.request({ url: '/upload', method: 'post', data: formData, headers: { 'Content-Type': 'multipart/form-data' }, onUploadProgress: (progressEvent) => { // 用于上傳過(guò)程中顯示進(jìn)度條 if (progressEvent.lengthComputable) { // 顯示進(jìn)度條 this.upload.fileProgressShow = true; // 計(jì)算當(dāng)前進(jìn)度 let curValue = (progressEvent.loaded / progressEvent.total * 100).toFixed(0); // 賦值給進(jìn)度條組件 this.upload.fileProgress = parseInt(curValue); } } }) .then(res => { // 上傳成功處理 // 隱藏進(jìn)度條 this.upload.fileProgressShow = false; }) .catch(() => { // 上傳失敗處理 // 隱藏進(jìn)度條 this.upload.fileProgressShow = false; }) }, 50); } return false; } } }; </script> <style scoped> .upload { width: 40%; } </style>
效果圖
上傳多文件,只進(jìn)行了一次ajax請(qǐng)求,這里xlz是一個(gè)超大壓縮包,用于展示進(jìn)度條效果, binary 為二進(jìn)制文件
看完上述內(nèi)容,你們掌握vue 使用lodash如何實(shí)現(xiàn)對(duì)象數(shù)組的深拷貝的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。