最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue詳細(xì)講解Vuex狀態(tài)管理的實現(xiàn)

 更新時間:2022年08月12日 10:58:31   作者:賢蛋大眼萌  
這篇文章主要介紹了Vuex狀態(tài)管理器的使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

什么是狀態(tài)管理

在開發(fā)中,我們會的應(yīng)用程序需要處理各種各樣的數(shù)據(jù),這些 數(shù)據(jù)需要保存在我們應(yīng)用程序中的某一個位置,對于這些數(shù)據(jù) 的管理我們就稱之為是狀態(tài)管理

Vuex 的狀態(tài)管理的基本實現(xiàn)(這里采用官方的圖解)

Vuex的使用

安裝vuex

npm install vuex

基本使用 :

store本質(zhì)上是一個容器 --> 存著大部分應(yīng)用中的狀態(tài)。

vuex 的狀態(tài)存儲是響應(yīng)式的,當(dāng)store中的狀態(tài)發(fā)生變化時,那么響應(yīng)的組件也會被更新。

// main.js
import { createApp } from "vue"
import App from "./App.vue"
import store from "./store"
const app = createApp(App)
app.user(store)
app.mount("#app")
// src/store/index.js
import { createStore } from "vuex"
const store = createStore({
  state: () => ({
    counter: 100
  }),
  mutations: {
    increment(state) {
      state.counter++
    }
  }
})
export default store
//App.vue
<template>
  <div class="app">
    <!-- store 中的counter -->
    <h2>方式一:模板:App當(dāng)前計數(shù): {{$store.state.counter}}</h2>
    <h2>方式二:optionsAPI中的computed使用: {{storeCounter}}</h2>
    <h2>方式三:在compositionAPI中setup函數(shù)使用:{{counter}}</h2>
    <button @click="increment">+1</button>
  </div>
</template>
<script>
export default {
  computed: {
    storeCounter () {
      return this.store.state.counter
    }
  }
}
</script>
<script setup>
import { toRefs } from 'vue'
import { useStore } from 'vuex'
const store = useStore()
const { counter } = toRefs(store.state)
function increment () {
  store.commit("increment")
}
</script>
<style scoped></style>

單一狀態(tài)樹和mapState輔助函數(shù)

1. 單一狀態(tài)樹

意味著每一個應(yīng)用就只包含一個 store實例

優(yōu)點:如果狀態(tài)信息包含了多個 store 實例對象,那么之后維護(hù)和管理起來就會比較麻煩。單一狀態(tài)樹是我們最直接的方式找到某一個狀態(tài)的片段,所以維護(hù)起來也比較方便

2. mapState輔助函數(shù)

? 如果需要獲取多個狀態(tài)的時候,可以使用 mapSate 輔助函數(shù)

這里有兩種方式,分別是在optionsAPI 和 composition API中使用 mapState

getters的基本使用

1. getter的使用

場景:當(dāng)需要我們將store中的某些屬性經(jīng)過一些列的變化之后再使用,這個時候可以選擇使用getters

2. getters第二個參數(shù)

在上述場景中,getters接受的第一個參數(shù)是state,getters 也可以接收第二個參數(shù)

3. getters的返回函數(shù) (了解)

getters中的函數(shù)本身,可以返回一個函數(shù),那么在使用的地方相當(dāng)于可以調(diào)用這個函數(shù)

4. mapGetters的輔助函數(shù)

mutation基本使用

改變vuex中的store的狀態(tài)的唯一方法是提交mutation

注意:在pinia中是取消了mutation,后續(xù)會繼續(xù)講。搭配vue3的composition API會比vuex更好,所以這里使用 options API演示

1. mutation攜帶數(shù)據(jù)

很多時候我們在提交mutation的時候會攜帶一些數(shù)據(jù),這個時候可以這樣使用

2. mutation重要原則

mutation 必須是同步函數(shù),即不允許使用異步函數(shù)(例如發(fā)送網(wǎng)絡(luò)請求)

actions的基本使用

Action類似于mutation,不同在于:

  • Action提交的是mutation,而不是直接變更狀態(tài);
  • Action可以包含任意異步操作;

參數(shù)context:

  • context是一個和store實例均有相同方法和屬性的context對象;
  • 可以從其中獲取到commit方法來提交一個mutation,或者通過 context.state 和 context.getters 來獲取 state 和 getters;

1. actions的分發(fā)操作

2. actions的輔助函數(shù)

3. actions的異步操作

module的基本使用

? 由于使用單一狀態(tài)樹,應(yīng)用的所有狀態(tài)會集中到一個比較大的對象,當(dāng)應(yīng)用變得非常復(fù)雜時,store 對象就有可能變得相當(dāng)臃腫。所以Vuex允許我們將 store 分割成模塊(module)。

? 每個模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊

1. module的局部狀態(tài)

對于模塊內(nèi)部的 mutation 和 getter,接收的第一個參數(shù)是模塊的局部狀態(tài)對象。

2. module的命名空間

? 默認(rèn)情況下,模塊內(nèi)部的action和mutation仍然是注冊在全局的命名空間中的。所以命名不可以重復(fù)

? 如果我們希望模塊具有更高的封裝度和復(fù)用性,可以添加 namespaced: true 的方式使其成為帶命名空間的模塊: 當(dāng)模塊被注冊后,它的所有 getter、action 及 mutation 都會自動根據(jù)模塊注冊的路徑調(diào)整命名。

3. module修改或派發(fā)根組件

? 在action中修改root中的state,那么有如下的方式:

到此這篇關(guān)于Vue詳細(xì)講解Vuex狀態(tài)管理的實現(xiàn)的文章就介紹到這了,更多相關(guān)Vue Vuex狀態(tài)管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實現(xiàn)釘釘?shù)目记谌諝v

    vue實現(xiàn)釘釘?shù)目记谌諝v

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)釘釘?shù)目记谌諝v,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Vue列表如何實現(xiàn)滾動到指定位置樣式改變效果

    Vue列表如何實現(xiàn)滾動到指定位置樣式改變效果

    這篇文章主要介紹了Vue列表實現(xiàn)滾動到指定位置樣式改變效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • vue項目中仿element-ui彈框效果的實例代碼

    vue項目中仿element-ui彈框效果的實例代碼

    這篇文章主要介紹了vue項目中仿element-ui彈框效果的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue 修改 data 數(shù)據(jù)問題并實時顯示的方法

    vue 修改 data 數(shù)據(jù)問題并實時顯示的方法

    今天小編就為大家分享一篇vue 修改 data 數(shù)據(jù)問題并實時顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 在vue3中動態(tài)加載遠(yuǎn)程組件的流程步驟

    在vue3中動態(tài)加載遠(yuǎn)程組件的流程步驟

    在一些特殊的場景中(比如低代碼、減少小程序包體積、類似于APP的熱更新),我們需要從服務(wù)端動態(tài)加載.vue文件,然后將動態(tài)加載的遠(yuǎn)程vue組件渲染到我們的項目中,今天這篇文章我將帶你學(xué)會,在vue3中如何去動態(tài)加載遠(yuǎn)程組件,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08
  • VS編譯器中引用Vue3框架的實現(xiàn)步驟

    VS編譯器中引用Vue3框架的實現(xiàn)步驟

    本文主要介紹了VS編譯器中引用Vue3框架的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 十分鐘帶你讀懂Vue中的過濾器

    十分鐘帶你讀懂Vue中的過濾器

    過濾器提供給我們的一種數(shù)據(jù)處理方式。過濾器功能不是必須要使用的,因為它所實現(xiàn)的功能也能用計算屬性或者函數(shù)調(diào)用的方式來實現(xiàn)。這篇文章主要為大家介紹了Vue中過濾器的使用,需要的可以了解一下
    2023-03-03
  • Vue3兄弟組件傳值之mitt的超詳細(xì)講解

    Vue3兄弟組件傳值之mitt的超詳細(xì)講解

    之前只是淺顯的使用插件進(jìn)行vue開發(fā)展示,最近深入的研究了下,下面這篇文章主要給大家介紹了關(guān)于Vue3兄弟組件傳值之mitt的超詳細(xì)講解,需要的朋友可以參考下
    2022-06-06
  • Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    這篇文章主要介紹了Vue集成three.js,并加載glb、gltf、FBX、json模型,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 復(fù)刻畫龍產(chǎn)品vue實現(xiàn)新春氣泡兔

    復(fù)刻畫龍產(chǎn)品vue實現(xiàn)新春氣泡兔

    這篇文章主要為大家介紹了復(fù)刻畫龍產(chǎn)品之使用vue實現(xiàn)新春氣泡兔示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評論

大余县| 讷河市| 牟定县| 石城县| 宁陕县| 延津县| 聂拉木县| 扎赉特旗| 宁陕县| 房山区| 乃东县| 恩平市| 湟源县| 兰考县| 滦平县| 竹山县| 锡林浩特市| 内丘县| 图们市| 鹤庆县| 永川市| 隆化县| 台南县| 建昌县| 哈尔滨市| 黎川县| 金坛市| 万荣县| 巩留县| 西乌珠穆沁旗| 含山县| 乌兰浩特市| 开原市| 永仁县| 宜黄县| 长海县| 清新县| 绥化市| 三台县| 涞水县| 郸城县|