uniapp-商城-26-vuex 使用流程

為了能在所有的頁面都實現狀態管理,我們按照前面講的頁面進行狀態獲取,然后再進行頁面設置和布局,那就是重復工作,vuex 就會解決這樣的問題,如同類、高度提煉的接口來幫助我們實現這些重復工作的管理。避免一直在造一樣的輪子。

https://vuex.vuejs.org/zh/#%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E6%A8%A1%E5%BC%8F%E2%80%9D%EF%BC%9F

上面是vuex的官網。

其實以后用vuex 比較少? 但是vue2 上還是用的多,以后vue3或者4 都是用的Pinia

這樣的方案到處都是。

vuex 一般項目中用的就是module? 其他的模塊都是很少單獨使用的。

uniapp中是內置了vue下的。不需要再一次安裝,只需要構建一下就好了。

vue2中如果沒有安裝,可以手動裝,

安裝 | Vuex

這里要用的有? 頁面動物模塊狀態,購物車的狀態都要用到這樣的狀態數據。像購物車不可能需要用到購物車的數據的地方都去讀取數據庫,那樣會很麻煩,加大數據庫的訪問量。而且也慢。

1、建立一個文件夾在項目中? store

2、建立一個文件 index.js?? 在store--->index.js

3、在index.js? 導入vuex,?? import Vue from "vue"

具體如下:

//1、按照模塊進行開發?? 不需要每一頁面都定義? 所以前面開發的shop-headebar.vue? 是一個小小的demo? 這里還是要用到vuex的概念
//1.1 你改了vuex 中的值 就改變了所有的值? 想想都覺得舒坦? 如:購物車中數量變化 ,訂單,支付賬單, 購物頁面都一起變化; 頁面狀態值的使用也可以用vuex 用到整體 避免每一頁都改變
// 2、項目建立store文件夾
// 3、創建 index。js 在 store文件夾
// 4、index中 按照如下方式寫
import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex)?? //再vue安裝vuex

// 5、index中 實例化 vuex
//基本上包含這5個對象
const store = new Vuex.Store({
??? state:{
??????? //定義變量? 一般這些后面就直接放大modules的js文件中定義,index進行導入就好
??????? vuexValue1:22,? //這里的值,相當于data,每一個頁面都可以用
??????? vuexValue2:232,? //這里的值,相當于data,每一個頁面都可以用
??????? vuexName:"開開心心",? //這里的值,相當于data,每一個頁面都可以用
??? },
?? ?
??? getters:{
?????? ?
??? },
??? mutations:{
??????? //定義動作 state 是上面定義的變量?? num 是傳進來的值
??????? setVuexValue(state,num){
??????????? state.vuexValue1 =num
??????? }
??? },
??? actions:{
?????? ?
??? },
??? modules:{
?????? ?
??? }
})

export default store?
// 6、 index中 要 把它導出去,方便引入的頁面可以用上面的定義的值和方法


//7、當然這里還需要將其導入到main.jS中? ,全局導出使用,main.JS如下方式:
/*
import store from '@/store'
//這樣就可以對該store進行全局掛載 使用
Vue.prototype.$store=store
*/

// 8、然后再需要用的頁面 導入 按照如下方式? import
// 9、在進行計算? 把需要的值計算過來
/*
<template>
??? <view>
??????? 個人中心
??????? {{vuexValue1}} {{vuexName}} ?
??????? <button @click="clkbtn">修改</button>

//這里的變化,就會改變其他使用這個vuexValue1 的值,使用vuex 就是這樣的一個好處,一個大腦,多處使用。
??? </view>
</template>

<script>
??? import {mapState,mapMutations} from "vuex"
??? export default {
??????? data() {
??????????? return {
?????????????? ?
??????????? };
??????? },
??????? computed:{
??????????? ...mapState(["vuexValue1","vuexName"])
??????? },
??????? methods:{
??????????? ...mapMutations(["setVuexValue"]),
??????????? clkbtn(){

??????????????? //this.vuexValue1=55?? 不能這樣

??????????????? //這里的修改不能用 直接修改需要調用vuex中的方法:如下
??????????????? this.setVuexValue(55)??? //默認就把state導過來了 相當于類? 不用寫變量
??????????? }
??????? }
??? }
</script>

<style lang="scss">

</style>

??? */
? ?
?? // 10.如果其他組件需要用,也要按照 8、9的方法來導入
? ?
?? // 11 如果后面要改變這里的state 需要使用mutations?? ,然后在要用的頁面的方法中導入
?? /*
?? methods:{
?????? ...mapMutations(["setVuexValue"]),
?????? clkbtn(){
?????????? this.setVuexValue(55)
?????? }
??? */
??

//1、按照模塊進行開發   不需要每一頁面都定義  所以前面開發的shop-headebar.vue  是一個小小的demo  這里還是要用到vuex的概念
//1.1 你改了vuex 中的值 就改變了所有的值  想想都覺得舒坦  如:購物車中數量變化 ,訂單,支付賬單, 購物頁面都一起變化; 頁面狀態值的使用也可以用vuex 用到整體 避免每一頁都改變
// 2、項目建立store文件夾
// 3、創建 index。js 在 store文件夾
// 4、按照如下方式寫
import Vue from "vue"
import Vuex from "vuex"Vue.use(Vuex)   //再vue安裝vuex// 5、實例化 vuex
//基本上包含這5個對象 
const store = new Vuex.Store({state:{//定義變量  一般這些后面就直接放大modules的js文件中定義,index進行導入就好vuexValue1:22,  //這里的值,相當于data,每一個頁面都可以用vuexValue2:232,  //這里的值,相當于data,每一個頁面都可以用vuexName:"開開心心",  //這里的值,相當于data,每一個頁面都可以用},getters:{},mutations:{//定義動作 state 是上面定義的變量   num 是傳進來的值setVuexValue(state,num){state.vuexValue1 =num}},actions:{},modules:{}
})export default store  
// 6、 把它到出去,方便引入的頁面可以用上面的定義的值和方法
//7、當然這里還需要將其導入到main.jS中  如下方式:
/*
import store from '@/store'
//這樣就可以對該store進行全局掛載 使用
Vue.prototype.$store=store
*/// 8、然后再需要用的頁面 導入 按照如下方式  import 
// 9、在進行計算  把需要的值計算過來
/*
<template><view>個人中心{{vuexValue1}} {{vuexName}}  <button @click="clkbtn">修改</button></view>
</template><script>import {mapState,mapMutations} from "vuex"export default {data() {return {};},computed:{...mapState(["vuexValue1","vuexName"])},methods:{...mapMutations(["setVuexValue"]),clkbtn(){this.setVuexValue(55)}}}
</script><style lang="scss"></style>*/// 10.組件需要用,也要按照 8、9的方法來導入// 11 如果后面要改變這里的state 需要使用mutations   ,然后在要用的頁面的方法中導入/*methods:{...mapMutations(["setVuexValue"]),clkbtn(){this.setVuexValue(55)}*/

注:------------------------------------

如果我們再兩個地方用一個值,那么這里就可以實現一個地方變化,其他地方跟到變化。

很好的例子就是購物車,在多個地方都需要變化

另外:

安裝 | Vuex

1、state 模塊 就是一個 數據模塊? 相當于 vue中script的?? data?

2、getter 就是一個實現計算屬性? 相當于vue中script的? computed ? 如:求和等

3、mutation 就是方法,相當于vue中script的? 方法:methods,它可以修改data中的值,這里就是修改state中的值;

4、action 是一個異步的方法

5、module 是最終的使用方式

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

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

相關文章

Git 命令速查手冊

聽說用美圖可以釣讀者&#xff1f; 一、基礎操作核心命令 1. 倉庫初始化與克隆 命令作用示例git init創建新倉庫git init my-projectgit clone克隆遠程倉庫git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add關聯遠程倉庫git re…

信息量、香農熵、交叉熵、KL散度總結

信息量 對于一個事件而言&#xff0c;它一般具有三個特征&#xff1a; 小概率事件往往具有較大的信息量 大概率事件往往具有較小的信息量 獨立事件的信息量相互可以相加 比如我們在買彩票這個事件中&#xff0c;彩票未中獎的概率往往很高&#xff0c;對我們而言一點也不稀…

使用C語言的cJSON中給JSON字符串添加轉義

在 cJSON 庫中&#xff0c;沒有直接提供 一個函數來專門給 JSON 字符串添加轉義&#xff08;如將 " 轉義為 \"&#xff0c;\n 轉義為 \\n 等&#xff09;。 但 cJSON 在 序列化&#xff08;cJSON_Print 或 cJSON_PrintUnformatted&#xff09; 時會自動處理轉義字符…

宇樹機器狗go2—slam建圖(1)點云格式

0.前言 上一篇番外文章教大家如何在宇樹機器狗go2的gazebo仿真環境中實現簡單的導航運動&#xff0c;本期文章會教大家如何讓宇樹的機器狗go2在仿真環境中進行slam建圖時經常會遇到的一些點云格式&#xff0c;在后續的slam建圖和slam算法解析的時候會經常與這些點云信息打交道…

linux socket編程之udp(實現客戶端和服務端消息的發送和接收)

目錄 一.創建socket套接字(服務器端) 二.bind將prot與端口號進行綁定(服務器端) 2.1填充sockaddr_in結構 2.2bind綁定端口 三.直接通信(服務器端) 3.1接收客戶端發送的消息 3.2給客戶端發送消息 四.客戶端通信 4.1創建socket套接字 4.2客戶端bind問題 4.3直接通信即可…

第1期:Python基礎語法入門

1.1 Python簡介 Python是一種解釋型、面向對象、動態數據類型的高級編程語言。它設計簡潔&#xff0c;易于學習&#xff0c;適合初學者。Python廣泛應用于數據科學、人工智能、Web開發、自動化腳本等領域。它的語法簡潔易懂&#xff0c;強調代碼的可讀性。 1.2 安裝Python與配…

使用EXCEL繪制平滑曲線

播主播主&#xff0c;你都多少天沒更新了&#xff01;&#xff01;&#xff01;泥在干什么&#xff1f;你還做這個賬號麻&#xff1f;&#xff01;&#xff01;&#xff01; 做的做的&#xff08;哭唧唧&#xff09;&#xff0c;就是最近有些忙&#xff0c;以及…… 前言&…

當算力遇上馬拉松:一場科技與肉身的極限碰撞

目錄 一、從"肉身苦修"到"科技修仙" 二、馬拉松的"新大陸戰爭" 三、肉身會被算法"優化"嗎? 馬拉松的下一站是"人機共生"時代 當AI能預測你的馬拉松成績,算法能規劃最佳補給方案,智能裝備讓訓練效率翻倍——你還會用傳…

MLLMs for TSAD ?

項目鏈接:Multimodal LLMs Advance Time Series Analysis 代碼鏈接:https://github.com/mllm-ts/VisualTimeAnomaly 出處:ICLR 2025 一 文章動機 多模態 LLM (MLLM) 通過 “視覺” 方式處理時序的潛力仍未充分探索; 人類檢測 “時序異常” 的自然方式:可視化、文本描…

開發基于python的商品推薦系統,前端框架和后端框架的選擇比較

開發一個基于Python的商品推薦系統時&#xff0c;前端和后端框架的選擇需要綜合考慮項目需求、開發效率、團隊熟悉度以及系統的可擴展性等因素。 以下是一些推薦的框架和建議&#xff1a; 后端框架 Flask 優點&#xff1a; 輕量級&#xff1a;Flask的核心非常簡潔&#xff0c;…

chili3d調試筆記2+添加web ui按鈕

onclick 查找 打個斷點看看 挺可疑的&#xff0c;打個斷點看看 挺可疑的&#xff0c;打個斷點看看 打到事件監聽上了 加ui了 加入成功 新建彈窗-------------------------------------- 可以模仿這個文件&#xff0c;寫彈窗 然后在這里注冊一下&#xff0c;外部就能調用了 對了…

【重學Android】1.關于@Composer注解的一點知識筆記

最新因為一些原因&#xff0c;開始重新學習Android及kotlin編程&#xff0c;也覺得可以順帶記錄下這個過程中的一些知識點&#xff0c;也可以用作日后自己查找復習。 Composable 注解在 Android 開發中的使用 Composable 是 Jetpack Compose&#xff08;Android 的現代聲明式…

qt+mingw64+cmake+libqrencode項目編譯和搭建成功記錄

最近要使用高拍儀拍照獲取照片&#xff0c;然后識別照片中的二維碼數據、使用QZxing只能識別出一個條碼、另外一個條碼準備測試用其他的開源項目&#xff08;如libqrencode-4.1.1&#xff09;來進行測試&#xff0c;故進行本文的項目環境搭建測試&#xff0c;最后成功。 本機開…

【今日三題】判斷是不是平衡二叉樹(遞歸) / 最大子矩陣(二維前綴和) / 小蔥的01串(滑動窗口)

??個人主頁&#xff1a;小羊 ??所屬專欄&#xff1a;每日兩三題 很榮幸您能閱讀我的文章&#xff0c;誠請評論指點&#xff0c;歡迎歡迎 ~ 目錄 判斷是不是平衡二叉樹(遞歸)最大子矩陣(二維前綴和)小蔥的01串(滑動窗口) 判斷是不是平衡二叉樹(遞歸) 判斷是不是平衡二叉…

【Linux】線程ID、線程管理、與線程互斥

&#x1f4da; 博主的專欄 &#x1f427; Linux | &#x1f5a5;? C | &#x1f4ca; 數據結構 | &#x1f4a1;C 算法 | &#x1f310; C 語言 上篇文章&#xff1a; 【Linux】線程&#xff1a;從原理到實戰&#xff0c;全面掌握多線程編程&#xff01;-CSDN博客 下…

定制一款國密瀏覽器(10):移植SM2算法前,解決錯誤碼的定義問題

上一章中,我給大家介紹了 SM4 在 BoringSSL 上的移植要點,本來計劃本章介紹 SM2 算法的移植要點。在移植 SM2 過程中,遇到了一個攔路虎,所以先掃除這個攔路虎,這就是錯誤碼的定義問題。 在銅鎖中,引入了幾個錯誤碼和錯誤字符串,在文件 sm2_err.c 中: static const ER…

JDOM處理XML:Java程序員的“樂高積木2.0版“

各位代碼建筑師們&#xff01;今天我們要玩一款比原生DOM更"Java友好"的XML積木套裝——JDOM&#xff01;它像樂高得寶系列&#xff08;Duplo&#xff09;一樣簡單易用&#xff0c;卻能讓你的XML工程穩如霍格沃茨城堡&#xff01;&#xff08;溫馨提示&#xff1a;別…

【后端開發】Spring日志

文章目錄 Spring日志日志作用日志測試日志信息日志級別日志配置配置日志級別日志持久化日志文件分割 注解的使用 Spring日志 日志作用 系統監控&#xff1a;可以通過日志記錄這個系統的運行狀態&#xff0c;對數據進行分析&#xff0c;設置不同的規則&#xff0c;超過閾值時進…

探索大語言模型(LLM):Transformer 與 BERT從原理到實踐

Transformer 與 BERT&#xff1a;從原理到實踐 前言一、背景介紹二、核心公式推導1. 注意力機制&#xff08;Attention Mechanism&#xff09;2. 多頭注意力機制&#xff08;Multi-Head Attention&#xff09;3. Transformer 編碼器&#xff08;Transformer Encoder&#xff09…

計算機網絡八股——HTTP協議與HTTPS協議

目錄 HTTP1.1簡述與特性 1. 報文清晰易讀 2. 靈活和易于擴展 3. ?狀態 Cookie和Session 4. 明?傳輸、不安全 HTTP協議發展過程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS協議 HTTP協議和HTTPS協議的區別 HTTPS中的加密方式 HTTPS中建立連接的方式 前言&#xff…