【Vue】練習-mutations的減法功能

文章目錄

  • 一、需求
  • 二、完整代碼

一、需求

68321724875

步驟

68321726825


二、完整代碼

Son1.vue

<template><div class="box"><h2>Son1 子組件</h2>從vuex中獲取的值: <label>{{ $store.state.count }}</label><br><button @click="handleAdd(1)">值 + 1</button><button @click="handleAdd(5)">值 + 5</button><button @click="handleAdd(10)">值 + 10</button><button @click="handleChange">一秒后修改成666</button><button @click="changeFn">改標題</button><hr><!-- 計算屬性getters --><div>{{ $store.state.list }}</div><div>{{ $store.getters.filterList }}</div><hr><!-- 測試訪問模塊中的state - 原生 --><div>{{ $store.state.user.userInfo.name }}</div><button @click="updateUser">更新個人信息</button><button @click="updateUser2">一秒后更新信息</button><div>{{ $store.state.setting.theme }}</div><button @click="updateTheme">更新主題色</button><hr><!-- 測試訪問模塊中的getters - 原生 --><div>{{ $store.getters['user/UpperCaseName'] }}</div></div>
</template><script>
export default {name: 'Son1Com',created () {console.log(this.$store.getters)},methods: {updateUser () {// $store.commit('模塊名/mutation名', 額外傳參)this.$store.commit('user/setUser', {name: 'xiaowang',age: 25})},updateUser2 () {// 調用action dispatchthis.$store.dispatch('user/setUserSecond', {name: 'xiaohong',age: 28})},updateTheme () {this.$store.commit('setting/setTheme', 'pink')},handleAdd (n) {// 錯誤代碼(vue默認不會監測,監測需要成本)// this.$store.state.count++// console.log(this.$store.state.count)// 應該通過 mutation 核心概念,進行修改數據// 需要提交調用mutation// this.$store.commit('addCount')// console.log(n)// 調用帶參數的mutation函數this.$store.commit('addCount', {count: n,msg: '哈哈'})},changeFn () {this.$store.commit('changeTitle', '傳智教育')},handleChange () {// 調用action// this.$store.dispatch('action名字', 額外參數)this.$store.dispatch('changeCountAction', 666)}}
}
</script><style lang="css" scoped>
.box{border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
}
h2 {margin-top: 10px;
}
</style>

Son2.vue

<template><div class="box"><h2>Son2 子組件</h2>從vuex中獲取的值:<label>{{ count }}</label><br /><button @click="subCount(1)">值 - 1</button><button @click="subCount(5)">值 - 5</button><button @click="subCount(10)">值 - 10</button><button @click="changeCountAction(888)">1秒后改成888</button><button @click="changeTitle('前端程序員')">改標題</button><hr><div>{{ filterList }}</div><hr><!-- 訪問模塊中的state --><div>{{ user.userInfo.name }}</div><div>{{ setting.theme }}</div><hr><!-- 訪問模塊中的state --><div>user模塊的數據:{{ userInfo }}</div><button @click="setUser({ name: 'xiaoli', age: 80 })">更新個人信息</button><button @click="setUserSecond({ name: 'xiaoli', age: 80 })">一秒后更新信息</button><div>setting模塊的數據:{{ theme }} - {{ desc }}</div><button @click="setTheme('skyblue')">更新主題</button><hr><!-- 訪問模塊中的getters --><div>{{ UpperCaseName }}</div></div>
</template><script>
import { mapState, mapMutations, mapActions, mapGetters } from 'vuex'
export default {name: 'Son2Com',computed: {// mapState 和 mapGetters 都是映射屬性...mapState(['count', 'user', 'setting']),...mapState('user', ['userInfo']),...mapState('setting', ['theme', 'desc']),...mapGetters(['filterList']),...mapGetters('user', ['UpperCaseName'])},methods: {// mapMutations 和 mapActions 都是映射方法// 全局級別的映射...mapMutations(['subCount', 'changeTitle']),...mapActions(['changeCountAction']),// 分模塊的映射...mapMutations('setting', ['setTheme']),...mapMutations('user', ['setUser']),...mapActions('user', ['setUserSecond'])// handleSub (n) {//   this.subCount(n)// }}
}
</script><style lang="css" scoped>
.box {border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
}
h2 {margin-top: 10px;
}
</style>

store/index.js

// 這里面存放的就是 vuex 相關的核心代碼
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import setting from './modules/setting'// 插件安裝
Vue.use(Vuex)// 創建倉庫
const store = new Vuex.Store({// 嚴格模式 (有利于初學者,檢測不規范的代碼 => 上線時需要關閉)strict: true,// 1. 通過 state 可以提供數據 (所有組件共享的數據)state: {title: '倉庫大標題',count: 100,list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]},// 2. 通過 mutations 可以提供修改數據的方法mutations: {// 所有mutation函數,第一個參數,都是 state// 注意點:mutation參數有且只能有一個,如果需要多個參數,包裝成一個對象addCount (state, obj) {console.log(obj)// 修改數據state.count += obj.count},subCount (state, n) {state.count -= n},changeCount (state, newCount) {state.count = newCount},changeTitle (state, newTitle) {state.title = newTitle}},// 3. actions 處理異步// 注意:不能直接操作 state,操作 state,還是需要 commit mutationactions: {// context 上下文 (此處未分模塊,可以當成store倉庫)// context.commit('mutation名字', 額外參數)changeCountAction (context, num) {// 這里是setTimeout模擬異步,以后大部分場景是發請求setTimeout(() => {context.commit('changeCount', num)}, 1000)}},// 4. getters 類似于計算屬性getters: {// 注意點:// 1. 形參第一個參數,就是state// 2. 必須有返回值,返回值就是getters的值filterList (state) {return state.list.filter(item => item > 5)}},// 5. modules 模塊modules: {user,setting}
})// 導出給main.js使用
export default store

App.vue

<template><div id="app"><h1>根組件- {{ title }}- {{ count }}</h1><input :value="count" @input="handleInput" type="text"><Son1></Son1><hr><Son2></Son2></div>
</template><script>
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'
import { mapState } from 'vuex'
// console.log(mapState(['count', 'title']))export default {name: 'app',created () {// console.log(this.$router) // 沒配console.log(this.$store.state.count)},computed: {...mapState(['count', 'title'])},data: function () {return {}},methods: {handleInput (e) {// 1. 實時獲取輸入框的值const num = +e.target.value// 2. 提交mutation,調用mutation函數this.$store.commit('changeCount', num)}},components: {Son1,Son2}
}
</script><style>
#app {width: 600px;margin: 20px auto;border: 3px solid #ccc;border-radius: 3px;padding: 10px;
}
</style>

store/index.js

import Vue from 'vue'
import App from './App.vue'
import store from '@/store/index'
console.log(store.state.count)Vue.config.productionTip = falsenew Vue({render: h => h(App),store
}).$mount('#app')

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

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

相關文章

C# 界面控件中英切換

編程軟件:VS 2015 需求:界面有兩個按鈕&#xff0c;點擊可以將界面上所有控件進行不同語言的切換。 一共兩種方案&#xff0c;個人認為第二種方案使用范圍更廣&#xff08;這里以中英文切換為例&#xff09;。 方案一:如圖所示&#xff0c;建立兩個資源文件 將所需控件的中英…

海思SS928(SD3403)部署YOLOv5-YOLOv7步驟詳解

1. YOLO模型資料 本文檔內容以yolov5-7.0工程、yolov5s模型為例。 a. 模型結構 詳細的模型結構可以利用netron工具打開.pt或.onnx模型查看。 b. 模型參數即驗證結果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x為五種類型的預訓練模型,其包含的檢測類別相…

利用Pandas進行數據清洗與過濾:Python實戰指南

利用Pandas進行數據清洗與過濾&#xff1a;Python實戰指南 作為一個Python愛好者和數據分析從業者&#xff0c;我一直在探索如何利用Python來更高效地處理和分析數據。Python語言以其簡單易學、功能強大的特點&#xff0c;成為了數據分析領域的寵兒。本文將分享一些實用的Pyth…

2024 cicsn ezbuf

文章目錄 參考protobuf逆向學習復原結構思路exp 參考 https://www.y4ng.cn/posts/pwn/protobuf/#ciscn-2024-ezbuf protobuf 當時壓根不知道用了protobuf這個玩意&#xff0c;提取工具也沒提取出來&#xff0c;還是做題做太少了&#xff0c;很多關鍵性的結構都沒看出來是pro…

android 異屏同顯---學習筆記

實現 Android 異屏同顯(多個屏幕顯示同樣的畫面)可以通過多種方法來完成,具體實現方式會根據你的需求和設備的支持情況有所不同。以下是幾種常見的方法: 方法 1:使用 Cast SDK 如果你想要將內容投屏到智能電視或其他支持 Cast 的設備上,可以使用 Google Cast SDK。 主…

Unity 集成 FMOD 音頻管理插件 2.02

Unity 集成 FMOD 音頻管理插件 2.02 3. 集成教程&#xff1a;3.1 設置Unity項目3.2 設置FMOD項目3.3 設置 FMOD for Unity3.4 添加聲音&#xff1a;卡丁車引擎3.5 添加聲音&#xff1a;氛圍3.6 添加聲音&#xff1a;音樂3.7 刪除現有音頻3.8 下一步 10. 腳本 API 參考10.1 基礎…

Java鎖的四種狀態(無鎖、偏向級鎖、輕量級鎖、重量級鎖)

介紹 首先&#xff0c;我們需要明確一點&#xff1a;偏向級鎖、輕量級鎖、重量級鎖只針對synchronized 鎖的狀態總共有四種&#xff0c;級別由低到高依次為&#xff1a;無鎖、偏向鎖、輕量級鎖、重量級鎖。 這四種鎖狀態分別代表什么&#xff0c;為什么會有鎖升級&#xff…

在UI界面中實現3d人物展示

簡要原理(設置雙攝像機): 為需要展示的3D人物單獨設置一個攝像機(只設置為渲染人物層級),主要攝像機的方向與人物方向一致,但攝像機需要需要旋轉180,設置的角度自行進行微調創建一個Render Texture類型的組件用于存儲攝像機渲染的內容UI上設置需要展示的圖片區域,圖片…

遍歷目錄

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍歷在漢語中的意思是全部走遍&#xff0c;到處周游。在Python中&#xff0c;遍歷是將指定的目錄下的全部目錄&#xff08;包括子目錄&#xff09;及…

聰明人社交的基本順序:千萬別搞反了,越早明白越好

聰明人社交的基本順序&#xff1a;千萬別搞反了&#xff0c;越早明白越好 國學文化 德魯克博雅管理 2024-03-27 17:00 作者&#xff1a;方小格 來源&#xff1a;國學文化&#xff08;gxwh001&#xff09; 導語 比一個好的圈子更重要的&#xff0c;是自己優質的能力。 唐詩宋…

【重學C語言】十九、SDL2 圖形化編程的使用

【重學C語言】十九、SDL2 圖形化編程的使用 SDL2 的第一個程序渲染器紋理渲染1. 紋理的概念2. 加載紋理3. 渲染紋理4. 紋理設置和查詢5. 紋理渲染流程6. 注意事項SDL2_imageSDL2 的第一個程序 #define SDL_MAIN_HANDLED #include <SDL.h>int main(int argc, char* argv[…

AH股高開低走,創業板跌超2%,寧德時代下挫6%,微盤股指數反彈超5%

創業板跌2%&#xff0c;權重股寧德時代跌近6%&#xff1b;地產、光刻機概念股逆勢大漲&#xff1b;券商股午后集體下跌&#xff0c;天風證券一度跌停。微盤股指數經歷連跌后早盤反彈超5%。 內容提要 周五&#xff0c;A股高開后回落&#xff0c;午盤震蕩回升。截至收盤&#x…

python-Bert(谷歌非官方產品)模型基礎筆記0.1.096

python-bert模型基礎筆記0.1.015 TODOLIST官網中的微調樣例代碼Bert模型的微調限制Bert的適合的場景Bert多語言和中文模型Bert模型兩大類官方建議模型Bert模型中名字的含義Bert模型包含的文件Bert系列模型參數介紹微調與遷移學習區別Bert微調的方式Pre-training和Fine-tuning區…

Python可視化 | 使用matplotlib繪制面積圖示例

面積圖是數據可視化中的一個有效工具&#xff0c;用于說明時間上的關系和趨勢。它們提供了一種全面的、視覺上迷人的方法&#xff0c;通過熟練地將折線圖的可讀性與填充區域的吸引力相結合來呈現數值數據。 在本文中&#xff0c;我們將學習更多關于在Python中創建面積折線圖的…

【python】python指南(二):命令行參數解析器ArgumentParser

一、引言 對于算法工程師來說&#xff0c;語言從來都不是關鍵&#xff0c;關鍵是快速學習以及解決問題的能力。大學的時候參加ACM/ICPC一直使用的是C語言&#xff0c;實習的時候做一個算法策略后臺用的是php&#xff0c;畢業后做策略算法開發&#xff0c;因為要用spark&#x…

24考研408大變化,25考研高分上岸規劃+應對策略

巧了&#xff0c;我有現成的經驗&#xff1a; 數學和專業課的成績都不高不低&#xff0c;剛好夠用&#xff0c;其實408想上岸&#xff0c;不僅僅要學好408&#xff0c;還要學好考研數學&#xff0c;這是我的肺腑之言&#xff0c;我復試的時候&#xff0c;我知道的那些沒有進復試…

高通SDX12:Voice Over USB 功能調試

一、功能概述及使用環境 Linux PC 作為上位機,內置 SLIC基于高通 SDX12 平臺的設備作為從設備,通過USB連接到 Linux PC 上,在 PC 上枚舉 UAC 設備從設備進行 MO/MT Call 時,上位機使用 arecord 進行錄音,音頻數據通過 USB 傳至上位機,上位機停止錄音后再使用 aplay 進行播…

vue element 接口返回數據與控制臺打印數據不一致 踩坑

問題描述&#xff1a; 接口返回數據正常&#xff0c;&#xff0c;控制臺打印不對&#xff0c;element el-switch表格中使用&#xff0c;控制臺打印數據被改變 如下正常數據 數據id 17狀態是0 控制臺打印狀態卻是1 造成原因&#xff1a; element el-seitch組件修改了狀態 修…

解決方案:昇騰aarch64服務器安裝CUDA+GCC+CMake,編譯安裝Pytorch,華為昇騰HPC服務器深度學習環境安裝全流程

目錄 一、安裝CUDA和cudnn1.1、下載CUDA驅動1.2、安裝CUDA驅動1.3、配置環境變量1.4、安裝cudnn1.5、安裝magma-cuda 二、安裝gcc編譯器三、安裝CMake四、安裝NCCL五、編譯安裝Pytorch5.1、前提準備5.2、下載pytorch源碼5.3、配置環境變量5.4、Pytorch編譯安裝5.5、測試Pytorch…

Python教程:Python操作MySQL基礎使用

8、Python操作MySQL基礎使用 8.1 安裝pymysql pip install pymysql8.2 測試連接 測試代碼 from pymysql import Connection# 獲取到MySQL數據庫的鏈接對象 conn Connection(# 主機名hostlocalhost,# 端口號,默認3306port3306,# 賬戶名userroot,# 密碼password3535 )# 打印…