setup函數相關【3】

目錄

  • 1.setup函數:
      • 1.概述:
      • 2.案例分析:
  • 2.setup函數的優化:(setup語法糖)
      • 優化1:
      • 優化2:
        • 安裝插件:
          • 安裝指令:只對當前項目安裝
          • 配置vite.config.ts:
        • 代碼編寫:

1.setup函數:

1.概述:

  • setup 是Vue3中一個新的配置項,他是一個函數,是組合式API的舞臺,組件中所用到的 數據 方法 計算屬性 監視屬性等都在setup函數中;
  • setup 函數中 返回的對象中的內容,可以在模板中直接使用;
  • setup 函數中的this 是undefined,因此在setup函數中不使用this;
  • setup 函數 會beforeCreate之前調用,領先所有的鉤子執行的;

2.案例分析:

   在vue3開始學習的時候我們搭建了一個簡單的vue項目,但實際上我們是通過vue2語法來編寫的,也就是將數據放置在data屬性中,方法放置在methods屬性中這種分散的語法;在vue3中我們將這些數據,方法等全部放置在setup函數中;
<template><h2>名稱:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名稱</button>
</template><script>
export default {name: "School",setup() {console.log("setup函數執行了")//聲明(默認是 非響應式的) 變量  并 賦值let name = "猿究院";let address = "北大街";//不能使用this 是 undefined// console.log(this)// function changeName() {}const changeName = () => {console.log("更新name屬性:", name);name += "~";}return {//返回變量  可以在模板中直接使用name, address, changeName}},beforeCreate() {console.log("生命周期函數 beforeCreate")}
}</script><style scoped></style> 
<template>
<School></School>
</template><script>import School from "./School.vue"
export default {name: "App",components: {School}
}
</script><style scoped></style>

說明:在上述案例的school.vue組件中,我們將此組件的數據,及事件的回調函數全部寫到了setup函數中,并將數據和回調函數寫到了setup函數的return屬性中,注意,setup函數中的數據及方法必須在return中返回,才能在模板中直接使用

通過測試結果發現,可以正常將數據渲染到頁面上,但同時也存在兩個問題:

  • setup函數書寫過于繁瑣,在此函數中需要被渲染的數據必須在return中返回才可使用;
  • setup函數中的方法默認是非響應式的,也就是說案例中的改變名稱函數雖然會實際修改屬性的值,但不會將修改后的值渲染到頁面上;

通過測試結果可以看出,name屬性的值確實被改變了,但卻并未渲染到頁面上;

2.setup函數的優化:(setup語法糖)

優化1:

<template><h2>名稱:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名稱</button>
</template><!-- script setup用于主要邏輯 -->
<script lang="ts" setup>const name = '猿究院';
const address = '北大街';// 定義函數
const changeName = () => {console.log("更新name屬性:", name.value);name.value += '~';
};
</script><!-- 普通script用于定義組件相關屬性等 -->
<script lang="ts">
export default {name: 'School'
};
</script><style scoped></style>  

通過上述setup語法糖優化后,需要渲染到頁面的數據不用再寫到return中返回后才可使用了;

此時仍可以在頁面上獲取到相應的值,但此時的值仍是非響應式的,而且優化后需要寫兩個script編寫,所以仍然需要進一步優化;

優化2:

可以安裝一個vite插件,就可以將兩個script標簽進行合并了
安裝插件:
安裝指令:只對當前項目安裝
npm i vite-plugin-vue-setup-extend -D 
配置vite.config.ts:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
//導入插件
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
// https://vite.dev/config/
export default defineConfig({plugins: [vue(),//使用插件vueSetupExtend()],
}) 
代碼編寫:
<template><h2>名稱:{{ name }}</h2><h2 v-text="'地址:'+address"></h2><button @click="changeName">更新名稱</button>
</template><!--setup  語法糖-->
<script lang="ts" setup name="School">let name = "猿究院";
let address = "北大街";
const changeName = () => {console.log("更新name屬性:", name);name += '~'
}
</script><style scoped></style> 
<template><School></School>
</template><script setup lang="ts" name="App">import School from "./components/School.vue";</script><style scoped></style>

上面優化案例中,我們合并了兩個script標簽,并且實現了數據的正常渲染;

但此時的數據仍然是非響應式的,修改數據,還是不會同步渲染到頁面上,因此還需要進行優化;

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

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

相關文章

如何通過AI進行數據資產梳理

最終產出 數據資產清單 包含所有數據資產的詳細目錄,列出數據集名稱、描述、所有者、格式、存儲位置和元數據。 用途:幫助政府部門清晰了解數據資產分布和狀態。 數據質量報告 數據質量評估結果,記錄準確性、完整性、一致性等問題及改進建議,基于政府認可的數據質量框架(如…

【傳奇開心果系列】Flet框架結合pillow實現的英文文字倒映特效自定義模板特色和實現原理深度解析

Flet框架結合pillow實現的英文文字倒映特效自定義模板特色和實現原理深度解析 一、效果展示截圖 二、使用場景 三、特色說明 四、概括說明 五、依賴文件列表 六、安裝依賴命令 七、 項目結構建議 八、注意事項 九、Flet 文字倒影效果實現原理分析 (一)組件結構與功能 1. 圖像…

2025最新深度學習面試必問100題--理論+框架+原理+實踐 (下篇)

2025最新深度學習面試必問100題–理論框架原理實踐 (下篇) 在上篇中&#xff0c;我們已經深入探討了機器學習基礎、CNN、RNN及其變體&#xff0c;以及模型優化的核心技巧。 在下篇中&#xff0c;我們將把目光投向更遠方&#xff0c;聚焦于當今AI領域最炙手可熱的前沿。我們將深…

原子工程用AC6編譯不過問題

…\Output\atk_h750.axf: Error: L6636E: Pre-processor step failed for ‘…\User\SCRIPT\qspi_code.scf.scf’修改前&#xff1a; #! armcc -E ;#! armclang -E --targetarm-arm-none-eabi -mcpucortex-m7 -xc /* 使用說明 ! armclang -E --targetarm-arm-none-eabi -mcpuco…

Python有哪些經典的常用庫?(第一期)

目錄 1、NumPy (數值計算基礎庫) 核心特點&#xff1a; 應用場景&#xff1a; 代碼示例&#xff1a; 2、Pandas (數據分析處理庫) 應用場景&#xff1a; 代碼示例&#xff1a; 3、Scikit-learn (機器學習庫) 核心特點&#xff1a; 應用場景&#xff1a; 代碼示例&am…

現代 C++ 高性能程序驅動器架構

&#x1f9e0; 現代 C 高性能程序驅動器架構M/PA&#xff08;多進程&#xff09;是隔離的“孤島”&#xff0c;M/TA&#xff08;多線程&#xff09;是共享的“戰場”&#xff0c;EDSM&#xff08;事件驅動&#xff09;是高效的“反應堆”&#xff0c;MDSM&#xff08;消息驅動&…

投資儲能項目能賺多少錢?小程序幫你測算

為解決電網負荷平衡、提升新能源消納等問題&#xff0c;儲能項目的投資開發越來越多。那么&#xff0c;投資儲能項目到底能賺多少錢&#xff1f;適不適合投資&#xff1f;用“綠蟲零碳助手”3秒鐘精準測算。操作只需四步&#xff0c;簡單易懂&#xff1a;1.快速登錄&#xff1a…

Mac 能夠連Wife,但是不能上網問題解決

請按照以下步驟從最簡單、最可能的原因開始嘗試&#xff1a; 第一步&#xff1a;基礎快速排查 這些步驟能解決大部分臨時性的小故障。 重啟設備&#xff1a;關閉您的 Mac 和路由器&#xff0c;等待一分鐘后再重新打開。這是解決網絡問題最有效的“萬能藥”。檢查其他設備&am…

基于SpringBoot的旅游管理系統的設計與實現(代碼+數據庫+LW)

摘要 本文闡述了一款基于SpringBoot框架的旅游管理系統設計與實現。該系統整合了用戶信息管理、旅游資源展示、訂單處理流程及安全保障機制等核心功能&#xff0c;專為提升旅游行業的服務質量和運營效率而設計。 系統采用前后端分離架構&#xff0c;前端界面設計注重跨設備兼…

Springboot樂家流浪貓管理系統16lxw(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表項目功能&#xff1a;領養人,流浪貓,領養申請開題報告內容基于Spring Boot的樂家流浪貓管理系統開題報告一、研究背景與意義隨著城市化進程加速和人口增長&#xff0c;流浪貓問題已成為全球性社會挑戰。據統計&#xff0c;全球每年約有1.5億只無家可歸的寵物&a…

函數定義跳轉之代碼跳轉

相信大家在開發的過程中都有用到函數定義跳轉的功能&#xff0c;在 IDE 中&#xff0c;如果在函數調用的地方停留光標&#xff0c;可能會提示對應的函數定義&#xff0c;在 GitHub 中也是如此&#xff0c;對于一些倉庫來說&#xff0c;我們可以直接查看對應的函數定義了&#x…

探討Xsens在人形機器人研發中的四個核心應用

探索Xsens動作捕捉如何改變人形機器人研發——使機器人能夠從人類運動中學習、更直觀地協作并彌合模擬與現實世界之間的差距。人形機器人技術是當今世界最令人興奮且最復雜的前沿領域之一。研究人員不僅致力于開發能夠像人類一樣行走和行動的機器人&#xff0c;還致力于開發能夠…

C語言高級編程:一文讀懂數據結構的四大邏輯與兩大存儲

各類資料學習下載合集 ??https://pan.quark.cn/s/8c91ccb5a474? 作為一名程序員,我們每天都在與“數據”打交道。但你是否想過,這些數據在計算機中是如何被“整理”和“安放”的?為什么有些操作快如閃電,而有些則慢如蝸牛? 答案就藏在數據結構之中。 如果說算法是…

MySQL問題4

MySQL中varchar和char的區別 在 MySQL 中&#xff0c;VARCHAR 和 CHAR 都是用于存儲字符串類型的字段&#xff0c;但它們在存儲方式、性能、適用場景等方面存在明顯區別&#xff1a;1. 存儲方式類型說明CHAR(n)定長字符串&#xff0c;始終占用固定 n 個字符空間。不足的會自動在…

Web3 出海香港 101 |BuildSpace AMA 第一期活動高亮觀點回顧

香港政府在 2022-2023 年之間已經開始布局 Web3&#xff0c;由香港政府全資擁有的數碼港也進行了持續兩年多的深耕。目前數碼港已有接近 300 家企業入駐于此&#xff0c;包括 Animoca Brands、HashKey Group、CertiK 等行業知名獨角獸公司。此外&#xff0c;如 Cobo、OneKey、D…

LTE CA和NR CA的區別和聯系

LTE CA&#xff08;Carrier Aggregation&#xff09;和NR CA&#xff08;New Radio Carrier Aggregation&#xff09;都是載波聚合技術&#xff0c;它們的核心目標都是通過組合多個頻段的帶寬來提高數據傳輸速率&#xff0c;增強無線網絡的吞吐量。盡管它們的功能相似&#xff…

VBA 中的 Excel 工作表函數

一、引言 在使用VBA進行Excel自動化處理時&#xff0c;我們經常需要調用Excel內置的工作表函數來完成復雜的計算或數據處理任務。然而&#xff0c;很多VBA初學者并不清楚如何正確地在VBA中調用這些函數&#xff0c;甚至重復造輪子。本文將從基礎到進階&#xff0c;系統介紹如何…

老年公寓管理系統設計與實現(代碼+數據庫+LW)

摘要 隨著老齡化社會的不斷發展&#xff0c;老年人群體的生活質量和管理需求逐漸引起社會的廣泛關注。為了提高老年公寓的管理效率與服務質量&#xff0c;開發了一種基于SpringBoot框架的老年公寓管理系統。該系統充分利用了SpringBoot框架的快速開發優勢&#xff0c;結合現代…

綠算技術與清智圖靈簽署戰略合作協議

近日&#xff0c;廣東省綠算技術有限公司&#xff08;以下簡稱“綠算技術”&#xff09;與北京清智圖靈科技有限公司&#xff08;以下簡稱“清智圖靈”&#xff09;正式簽署戰略合作框架協議。雙方將圍繞通用并行計算、高端算力解決方案等領域展開深度合作&#xff0c;共同推動…

Android,jetpack Compose模仿QQ側邊欄

SwipeMainActivity代碼如下&#xff1a;package com.example.myapplicationimport android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Colu…