Vue模板中傳遞對象或數組時,避免直接使用字面量[]和{}

在 Vue 中,直接在模板中使用 []{} 作為 prop 值會導致子組件不必要的重新渲染,因為每次父組件渲染時都會創建新的引用。以下是解決方案和最佳實踐:

1. 避免在模板中直接使用字面量

<!-- 避免這樣寫 -->
<ChildComponent :items="[]" :config="{}" />

2. 使用 datacomputed 定義引用

將空數組/對象定義在父組件的 data 中,保持引用穩定:

export default {data() {return {// 保持引用不變的空數組/對象emptyArray: Object.freeze([]), emptyObject: Object.freeze({})}}
}
<ChildComponent :items="emptyArray" :config="emptyObject" />

3. 使用 Object.freeze(推薦)

凍結對象防止 Vue 添加響應式,同時保持引用不變:

data() {return {staticArray: Object.freeze([]), // 不可變空數組staticObject: Object.freeze({}) // 不可變空對象}
}

4. 常量共享引用(跨組件復用)

// constants.js
export const EMPTY_ARRAY = Object.freeze([]);
export const EMPTY_OBJ = Object.freeze({});// 父組件
import { EMPTY_ARRAY, EMPTY_OBJ } from './constants';export default {data() {return {emptyArray: EMPTY_ARRAY,emptyObject: EMPTY_OBJ}}
}

5. 需要響應式數據時

如果數據需要變動但初始值需為空,使用標準響應式定義:

data() {return {items: [], // 響應式可修改數組config: {} // 響應式可修改對象}
}

關鍵點說明

方案引用穩定性是否響應式適用場景
模板字面量 []/{}? 每次變? 無不推薦
data + Object.freeze? 穩定? 凍結靜態空值
共享常量? 穩定? 凍結跨組件復用空值
普通 data 屬性? 穩定? 響應式需要修改的動態數據

附加建議

  • 對于純展示型子組件,使用 v-once 避免重渲染:
    <ChildComponent v-once :config="staticObject" />
    
  • 復雜場景使用 v-memo (Vue 3.2+):
    <ChildComponent v-memo="[someKey]":items="items"
    />
    

通過保持對象/數組的引用穩定,可顯著優化子組件渲染性能,避免因父組件更新導致的無效重渲染。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/99015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/99015.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/99015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】list容器的模擬實現

目錄 1. 節點(list_node) 的結構 2. 哨兵位頭節點 3. list容器的成員變量 4. 插入/刪除操作 4.1 插入操作&#xff08;insert&#xff09; 4.2 刪除操作&#xff08;erase&#xff09; 5. 迭代器的實現 6. 不同迭代器和const容器的限制 7. 重載operator-> 8. 迭代器…

三大運營商eSIM手機業務開通加速

截至2025年9月11日&#xff0c;中國三大運營商eSIM手機業務開通情況呈現明顯差異化&#xff1a;中國聯通已率先支持eSIM手機業務&#xff0c;但僅限于特定城市和設備&#xff1b;中國移動和中國電信則處于"技術準備就緒&#xff0c;等待政策批復"階段&#xff0c;預計…

基于SpringBoot的足球論壇系統+論文示例參考

1.項目介紹 系統角色&#xff1a;管理員、普通用戶功能模塊&#xff1a;用戶管理、足球賽事、球員信息、推薦話題、帖子信息、周邊商城、訂單信息、系統管理等技術選型&#xff1a;SpringBoot&#xff0c;Vue等 測試環境&#xff1a;idea2024&#xff0c;jdk1.8&#xff0c;mys…

數據庫中悲觀鎖小結

實際上&#xff0c;悲觀并發控制實際上是“先取鎖再訪問”的保守策略&#xff0c;為數據處理的安全提供了保證。但是在效率方面&#xff0c;處理加鎖的機制會讓數據庫產生額外的開銷&#xff0c;還有增加產生死鎖的機會&#xff1b;另外&#xff0c;在只讀型事務處理中由于不會…

結構光三維重建原理詳解(1)

1. 基本原理概述 結構光三維重建&#xff08;Structured Light 3D Reconstruction&#xff09;是一種主動式光學測量方法。其核心思想是&#xff1a; 向物體表面投射一組 已知的、編碼好的光柵/條紋圖案&#xff1b;使用一個或多個攝像機拍攝這些條紋在物體表面的變形情況&…

TruckSim與Matlab-Simulink聯合仿真(一)

摘要 從0到1的TruckSim與Matlab-Simulink 簡單的聯合仿真。 1. 環境搭建 matlab版本&#xff1a;R2022a TruckSim版本&#xff1a;2019 其他適配版本自行搜索。 matlabR2022a安裝參考&#xff1a;參考鏈接 TruckSim2019安裝包百度網盤鏈接&#xff0c;里面有安裝流程&#x…

后端post請求返回頁面,在另一個項目中請求過來會出現的問題

目錄 1.后端post請求返回頁面&#xff0c;跨域問題 一、核心問題&#xff1a;跨域&#xff08;CORS&#xff09;限制&#xff08;最直接的技術障礙&#xff09; 具體表現&#xff1a; 二、安全性問題&#xff1a;CSRF 攻擊風險被放大 原理與危害&#xff1a; 三、交互體驗…

APT32F0042F6P6 32位微控制器(MCU)單片機 APT愛普特微電子 芯片核心解析

一、核心解析&#xff1a;APT32F0042F6P6 是什么&#xff1f;1. 電子元器件類型APT32F0042F6P6 是愛普特微電子&#xff08;APTCHIP&#xff09; 推出的一款基于平頭哥THead內核的32位微控制器&#xff08;MCU&#xff09;。它采用TSSOP20封裝&#xff0c;是一款主打高性價比、…

SDR集成式收發器設計資源

一、AD9361 制造商產品編號&#xff1a;ADRV9361-Z7035 庫存編號&#xff1a;4032703 價格&#xff1a;CNY17,737.18 含稅 制造商產品編號&#xff1a;ADRV1CRR-BOB 庫存編號&#xff1a;4023108 價格&#xff1a;CNY3,145.87 含稅 制造商產品編號&#xff1a;ADRV1CRR-FMC 庫存…

將Varjo XR技術融入飛行模擬器,有效降低成本提升訓練效果

擴展現實(XR)飛行模擬器通過以較低的成本提供沉浸式和逼真的飛行環境&#xff0c;徹底改變了飛行訓練。本文將XR利用了最近的研究和數據進行綜合分析&#xff0c;評估飛行模擬器的有效性。此外&#xff0c;根據XR技術在航空訓練中的優勢和應用&#xff0c;評估XR飛行模擬器最終…

簡單的GIT操作學習記錄

Git 版本控制基本使用 1.Idea版本共計基本操作 公司使用Git作為代碼版本管理工具&#xff0c;平時使用非常頻繁這里簡單整理方便后續學習查看 1.1 merge未推送回滾 我們代碼merge操作后&#xff0c;并且沒有推送到遠端&#xff0c;本地項目發現有推送箭頭&#xff0c;可以使…

Spring Boot 與前端文件下載問題:大文件、斷點續傳與安全校驗

前言在企業級 Spring Boot 項目中&#xff0c;文件下載 是非常常見的功能場景&#xff1a;用戶下載報表、合同、發票 PDF下載圖片、音視頻資源系統導出大規模 Excel/CSV 數據然而&#xff0c;很多開發者在實現文件下載時&#xff0c;會遇到 下載失敗、文件損壞、性能瓶頸、斷點…

主板硬件研發基礎--HDMI工作原理

HDMI 接口 技術原理:HDMI 接口采用 TMDS 技術傳輸數字信號,不僅可以傳輸高清視頻信號,還能同時傳輸多聲道音頻信號。它支持 EDID 和 DDC2B,設備之間能夠自動協商并選擇最合適的視頻 / 音頻格式,實現 “即插即用” 功能。 接口類型:常見的有標準 HDMI 接口、Mini-HDMI 接口…

`Object.groupBy`將數組中的數據分到對象中

Object.groupBy 將一個對象或者數組的元素按照規則分組&#xff0c; 返回一個新對象&#xff0c; Object.groupBy(items, callbackFn) items&#xff1a;要分組的對象或數組&#xff08;通常是數組&#xff09;。 callbackFn(element, index, array)&#xff1a;回調函數&#…

反序列化漏洞詳解

用途限制聲明&#xff0c;本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具&#xff0c;嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果&#xff0c;作者及發布平臺不承擔任何責任。滲透測試涉及復雜技…

SQL數據分析原代碼--創建表與簡單查詢

CREATE TABLE&#xff1a;創建表&#xff0c;定義字段名、類型、注釋INSERT INTO&#xff1a;插入數據&#xff0c;支持單條或批量插入SELECT&#xff1a;查詢數據&#xff0c;*表示所有字段&#xff0c;AS可起別名&#xff0c;DISTINCT去重WHERE&#xff1a;條件篩選&#xff…

k8s查詢ServiceAccount有沒有列出 nodes 的權限

要檢查 ServiceAccount xxxxxx:default 是否具有列出 nodes 的權限&#xff0c;可以使用以下方法&#xff1a;1. **使用 kubectl auth can-i 命令**這是最直接的方法&#xff0c;可以檢查特定用戶或 ServiceAccount 是否具有特定權限&#xff1a;kubectl auth can-i list nodes…

調試Python程序時,控制臺一直打印SharedMemory read faild

from tkinter import filedialog filedialog.askopenfilename()在使用 tkinter 時&#xff0c;只要一處罰&#xff0c;控制臺就不停打印 SharedMemory read faild &#xff0c;雖然能用&#xff0c;但是大大的破壞了調試體驗&#xff0c;看到如下的提示&#xff0c;你說煩不煩&…

QRCode React 完全指南:現代化二維碼生成解決方案

前言 在數字化時代&#xff0c;二維碼已經成為連接線上線下的重要橋梁。無論是分享鏈接、支付碼、還是身份驗證&#xff0c;二維碼都扮演著不可或缺的角色。qrcode.react 是一個專門為 React 應用設計的二維碼生成庫&#xff0c;它能夠快速、靈活地生成各種樣式的二維碼&#…

xxe外部實體注入漏洞

https://owasp.org/www-project-top-ten XXE基礎 xxe外部實體注入 外部實體 xml&#xff08;用于傳輸和存儲數據&#xff09; html&#xff08;用于顯示數據&#xff09; 注入&#xff1a; SQL注入&#xff1a;用戶輸入數據被當做代碼執行 1輸入點 2.輸入數據可以結合到數據庫…