Vue3中插槽, pinia的安裝和使用(超詳細教程)

1. 插槽

插槽是指, 將一個組件的代碼片段, 引入到另一個組件。

1.1?匿名插槽

通過簡單的案例來學習匿名插槽,案例說明,在父組件App.vue中導入了子組件Son1.vue,父組件引用子組件的位置添加了一個片段,比如h2標簽,然后在子組件選擇某個位置通過slot標簽引入父組件中定義的代碼片段。實操如下圖所示:

運行

可以看到正常情況下,應該是先執行“我是父組件的片段”,但是因為進行了插槽,并且<slot>標簽在子組件下, 所以子組件在上。如若<slot>標簽在上, 那么我是父組件的片段就在上方

1.2 具名插槽

之前寫的插槽都是沒有任何idname等標識符, 這就會導致我們在一個子組件中, 只能引用一個父組件的片段, 不能使用多次, 或者說從多個父組件引用片段, 所以就需要有插槽名來進行區分

具名插槽需要配合template標簽并使用v-slot:插槽名來定義,具體案例實操如下圖所示:

運行

具名插槽的簡寫

我們使用具名插槽的時候格式是這樣的: <template? v-slot:插槽名> 片段</template>

v-slot:插槽名 我們可以寫成===>? :插槽名

?部分代碼

<Son><template :mySlot1><p>這是父組件的片段1</p></template><template v-slot:mySlot2><p>這是父組件的片段2</p></template></Son>

1.3 作用域插槽

前兩個講的都是把父組件的片段引入到子組件,并沒有說明到傳值,?作用域插槽可以在slot標簽通過屬性的方式把值傳給父組件。

?

2. pinia

由于Vue3是組合式開發,有大量的組件,組件與組件之間雖然可以通過父子傳值等操作但是會造成大量的狀態散落在組件之間,維護起來非常不方面,Pinia可以很好的解決這些問題。

Pinia是一個輕量級的狀態管理庫。

所謂的狀態管理庫就是用于管理應用程序全局狀態的工具。那么什么又是全局狀態呢?

以登錄為例:

當用戶登錄成功時,登錄成功的這個狀態需要保持并維護,那么可以使用pinia來創建一個集中管理用戶登錄狀態的角色,并為其設置過期時間。

2.1 安裝和使用

在vscode的終端運行:? npm install pinia

在main.js文件中對pinia進行三步操作?導入,創建,注冊.?

通過上述操作,我們的項目就可以使用pinia了。

上面介紹的時候說了pinia是一個庫,那么具體幫我們管理組件之間數據和狀態的家伙是誰呢,一般管它叫store,接下來我們就來具體應用它。

在項目的src目錄下新建一個stores的目錄,然后再stores目錄下新建一個js文件當做我們存儲數據的倉庫,課程案例中取名用的是web.js,然后在web.js文件中定義store數據并導出,返回。實操如圖所示:

?? ?

2.2? 創建store步驟

?1. 導入pinia的defineStore方法

?2. 創建defineStore的對象并暴露

?3. 在方法中傳遞參數('文件名',()=>{參數名})

import { reactive,ref } from "vue"
import { defineStore } from "pinia"export const useWebStore = defineStore('web',()=>{const web = reactive({title:"Pinia test",url:"bing.com"})const users = ref(100)const addUser = ()=>{users.value++}return {web,users,addUser}
})

最后我們到組件上面去使用定義好的store倉庫中的數據以及函數,實操如下圖所示:

?2.3 運行結果

代碼:

<template><!-- <router-view></router-view> -->
webStore獲取到的值: {{ web.state }}
</template><script setup>
import {webStore} from './store/web.js'
const web = webStore()</script>

2.4 小結

先把一些需要用到的共享數據或函數給定義在一個js文件中,然后把該文件文件export出去。在使用的地方先導入,然后創建一個操作對象,通過操作對象進行操作即可。

3. 下一章預告

我們學到現在發現, 這是值雖然說可以獲取, 但是不能永久改變, 每次刷新后數值都會變回初始值.

那么下一章講的就是如何把數據進行持久化存儲, 至少說我的代碼運行的時候不會變回原來的樣子

?

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

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

相關文章

【Redis】AOF日志

目錄 1、背景2、工作原理3、核心配置參數4、優缺點5、AOF文件內容 1、背景 AOF&#xff08;Append Only File&#xff09;是redis提供的持久化機制之一&#xff0c;它通過記錄所有修改數據庫狀態的寫命令來實現數據庫持久化。與RDB&#xff08;快照&#xff09;方式不同&#…

【HTTP】connectionRequestTimeout與connectTimeout的本質區別

今天發現有的伙伴調用第三方 httpclient 的配置中 connectTimeout 和 connectionRequestTimeout 配置的不到 1 S&#xff0c;問了一下他&#xff0c;知不知道這兩個參數的意思&#xff0c;他說不知道。那我們今天就來了解一下這兩個參數的區別 一、核心概念解析 1.1 connectT…

react中運行 npm run dev 報錯,提示vite.config.js出現錯誤 @esbuild/win32-x64

在React項目中運行npm run dev時&#xff0c;如果遇到vite.config.js報錯&#xff0c;提示esbuild/win32-x64在另一個平臺中被使用&#xff0c;通常是由于依賴沖突或緩存問題導致的。解決方法是刪除node_modules文件夾&#xff0c;并重新安裝依賴。 如下圖&#xff1a; 解決辦…

EMQX開源版安裝指南:Linux/Windows全攻略

EMQX開源版安裝教程-linux/windows 因最近自己需要使用MQTT&#xff0c;需要搭建一個MQTT服務器&#xff0c;所以想到了很久以前用到的EMQX。但是當時的EMQX使用的是開源版的&#xff0c;在官網可以直接下載。而現在再次打開官網時發現怎么也找不大開源版本了&#xff0c;所以…

Python:操作Excel按行寫入

Python按行寫入Excel數據,5種實用方法大揭秘! 在日常的數據處理和分析工作中,我們經常需要將數據寫入到Excel文件中。Python作為一門強大的編程語言,提供了多種庫和方法來實現將數據按行寫入Excel文件的功能。本文將詳細介紹5種常見的Python按行寫入Excel數據的方法,并附上…

vue3中RouterView配合KeepAlive實現組件緩存

KeepAlive組件緩存 為什么需要組件緩存代碼展示緩存效果為什么不用v-if 為什么需要組件緩存 業務需求&#xff1a;一般是列表頁面通過路由跳轉到詳情頁&#xff0c;跳轉回來時&#xff0c;需要列表頁面展示上次展示的內容 代碼展示 App.vue入口 <script setup lang"…

【JAVA】比較器Comparator與自然排序(28)

JAVA 核心知識點詳細解釋 Java中比較器Comparator的概念和使用方法 概念 Comparator 是 Java 中的一個函數式接口,位于 java.util 包下。它用于定義對象之間的比較規則,允許我們根據自定義的邏輯對對象進行排序。與對象的自然排序(實現 Comparable 接口)不同,Comparat…

浪潮服務器配置RAID和JBOD

目錄 1 配置RAID2 設置硬盤為JBOD模式3 驗證結果 1 配置RAID 進入 bios 界面 選擇 “高級” - “UEFI-HII配置” 選擇 raid 卡 進入 Main Menu 點擊 Driver Management&#xff0c;可以查詢當前硬盤 返回上一級&#xff0c;點擊 Configuration Management - Create virtu…

mongodb管理工具的使用

環境&#xff1a; 遠程服務器的操作系統&#xff1a;centOS stream 9; mongoDB version:8.0; 本地電腦 navicat premium 17.2 ; 寶塔上安裝了mongoDB 目的&#xff1a;通過本地的navicat鏈接mongoDB,如何打通鏈接&#xff0c;分2步&#xff1a; 第一步&#xff1a;寶塔-&…

03-Web后端基礎(Maven基礎)

1. 初始Maven 1.1 介紹 Maven 是一款用于管理和構建Java項目的工具&#xff0c;是Apache旗下的一個開源項目 。 Apache 軟件基金會&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受歡迎的開源軟件基金會&#xff0c;也是一個專門為支持開源項目而生的非盈利性…

實景VR展廳制作流程與眾趣科技實景VR展廳應用

實景VR展廳制作是一種利用虛擬現實技術將現實世界中的展覽空間數字化并在線上重現的技術。 這種技術通過三維重建和掃描等手段&#xff0c;將線下展館的場景、展品和信息以三維形式搬到云端數字空間&#xff0c;從而實現更加直觀、立體的展示效果。在制作過程中&#xff0c;首…

Python爬蟲實戰:獲取天氣網最近一周北京的天氣數據,為日常出行做參考

1. 引言 隨著互聯網技術的發展,氣象數據的獲取與分析已成為智慧城市建設的重要組成部分。天氣網作為權威的氣象信息發布平臺,其數據具有較高的準確性和實時性。然而,人工獲取和分析天氣數據效率低下,無法滿足用戶對精細化、個性化氣象服務的需求。本文設計并實現了一套完整…

幾種超聲波芯片的特點和對比

一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心競爭力在于高性價比、易用性和抗光干擾能力&#xff0c;尤其適合消費電子、短距離工業檢測和低成本物聯網場景。盡管在距離和精度上不及高端芯片&#xff0c;但其成熟的電路方案和廣泛的市場應用&#xff08;如經典紅外遙控升級為超…

利用ffmpeg截圖和生成gif

從視頻中截取指定數量的圖片 ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180幀, 實測后發現如果視頻是60fps,那么會從第10秒截取到第13秒-i input.mp4&#xff1a;指定輸入視頻文…

系統架構設計師案例分析題——數據庫緩存篇

一.核心知識 1.redis和MySQL的同步方案怎么做的&#xff1f; 讀數據&#xff1a;先查詢緩存&#xff0c;緩存不存在則查詢數據庫&#xff0c;然后將數據新增到緩存中寫數據&#xff1a;新增時&#xff0c;先新增數據庫&#xff0c;數據庫成功后再新增緩存&#xff1b;更新和刪…

什么是智能體?

什么是智能體&#xff1f; 智能體&#xff08;AI Agent&#xff09;是一種能夠自主感知環境、做出決策并執行任務的智能實體&#xff0c;其核心依賴大型語言模型&#xff08;LLM&#xff09;或深度學習算法作為“大腦”模塊。它通過感知模塊&#xff08;如多模態輸入&#xff…

企業數字化轉型是否已由信息化+自動化向智能化邁進?

DeepSeek引發的AI熱潮迅速蔓延到了各個行業&#xff0c;目前接入DeepSeek的企業&#xff0c;涵蓋了科技互聯網、云服務、電信、金融、能源、汽車、手機等熱門領域&#xff0c;甚至全國各地政府機構也紛紛引入。 在 DeepSeek 等國產 AI 技術的推動下&#xff0c;眾多企業已經敏銳…

廣州卓遠VR受邀參加2025智能體育典型案例調研活動,并入駐國體華為運動健康聯合實驗室!

近日&#xff0c;“2025年智能體育典型案例調研活動”在東莞松山湖成功舉辦。本次調研活動由國家體育總局體育科學研究所和中國信息通信研究院聯合主辦&#xff0c;旨在深入貫徹中央關于培育新型消費的戰略部署&#xff0c;通過激活智能健身產品消費潛力&#xff0c;加快運動健…

springboot+vue實現鮮花商城系統源碼(帶用戶協同過濾個性化推薦算法)

今天教大家如何設計一個 鮮花商城 , 基于目前主流的技術&#xff1a;前端vue3&#xff0c;后端springboot。學習完這個項目&#xff0c;你將來找工作開發實際項目都會又很大幫助。文章最后部分還帶來的項目的部署教程。 系統有著基于用戶的協同過濾推薦算法&#xff0c;還有保證…

【android bluetooth 協議分析 02】【bluetooth hal 層詳解 3】【高通藍牙hal主要流程介紹-上】

1. 背景 本節主要討論 高通 藍牙 hal 中&#xff0c;的一些流程。 看看你是否都清楚如下問題&#xff1a; 高通芯片電如何控制&#xff1f;串口是在哪里控制的&#xff1f;固件如何下載&#xff1f;初始化流程是怎么樣的&#xff1f; 如果你已經對上述討論的問題&#xff0c…