国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vuex 的基本用法

這篇具有很好參考價值的文章主要介紹了vuex 的基本用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、vuex是什么?

Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),

這個狀態(tài)管理應用包含以下幾個部分:

  • state,驅(qū)動應用的數(shù)據(jù)源;
  • view,以聲明方式將 state 映射到視圖;
  • actions,響應在 view 上的用戶輸入導致的狀態(tài)變化。

給出一張官方的“單向數(shù)據(jù)流”理念的簡單示意:?

vuex 的基本用法

?每一個 Vuex 應用的核心就是 store(倉庫)?!皊tore”基本上就是一個容器,它包含著你的應用中大部分的狀態(tài) (state)。

Vuex 和單純的全局對象有以下兩點不同:

  • Vuex 的狀態(tài)存儲是響應式的。當 Vue 組件從 store 中讀取狀態(tài)的時候,若 store 中的狀態(tài)發(fā)生變化,那么相應的組件也會相應地得到高效更新。(也就是所謂的MVVM)
  • 你不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交 (commit)

看官網(wǎng)的一張圖,更加方便能看懂:

vuex 的基本用法

?如果理解了這張圖,你就能知道vuex的工作原理了!

?需要注意的點:

  • 改變狀態(tài)的唯一途徑就是提交mutations
  • 如果是異步的,就派發(fā)(dispatch)actions,其本質(zhì)還是提交mutations
  • 怎樣去觸發(fā)actions呢?可以用組件Vue Components使用dispatch或者后端接口去觸發(fā)
  • 提交mutations后,可以動態(tài)的渲染組件Vue Components

覺得是不是少了什么,沒錯,就是getters?下面原理實現(xiàn)的時候會說?

二、實現(xiàn)原理

1.準備工作

先npm i store 下載vuex插件,然后在mian.js中引入,如下:

vuex 的基本用法

?mian.js代碼:

import Vue from 'vue'
import App from './App.vue' 
import router from './router'
import store from './store' 
import axios from 'axios'
import { Button, Card } from 'element-ui'

Vue.use(Button)
  .use(Card)
// import ElementUI from 'element-ui'
// import 'element-ui/lib/theme-chalk/index.css'
Vue.prototype.$http = axios
// // 注冊 會自動將所有組件注冊為全局組件
// Vue.use(ElementUI)

Vue.config.productionTip = false

new Vue({
  router, 
  store, // 掛載到vue實例上,這樣全部的組件都可以使用store
  render: h => h(App)
}).$mount('#app')

?store文件下的index.js代碼:

import Vue from 'vue'
import Vuex from 'vuex'
import item from './modules/item'
import cart from './modules/cart'
import VuexPersistence from 'vuex-persist'
// 緩存部分數(shù)據(jù)
const vuexLocal = new VuexPersistence({
  storage: window.localStorage,
  reducer: state => {
    return {
      item: state.item
    }
  }
})
/*
  storage屬性的值應該是一個對象
  三個方法
  setItem(key, v)
  getItem(key)
  removeItem
*/
Vue.use(Vuex)
// 初始化 vuex 倉庫實例
const store = new Vuex.Store({
  strict: true,
  state: {
    num: 5000
  },
  modules: {
    item,
    cart
  },
  plugins: [vuexLocal.plugin]
})

export default store

?store文件下modules文件下的cart.js

import axios from 'axios'
export default {
  namespaced: true, //命名空間
  state: {
    num: 10,
    items: []
  },
  mutations: {
    ADD_NUM (state, n) {
      state.num += n
    },
    REDUCE_NUM (state, n) {
      state.num -= n
    },
    INIT_ITEMS (state, items) {
      state.items = items
    }
  },
  actions: {
    FETCH_ITEMS ({ commit }, params = {}) {
      axios.post('/conner/shop/goods/list/v2', params).then(res => {
        if (res.data.code === 0) {
          commit('INIT_ITEMS', res.data.data.result)
        }
      })
    }
  },
  getters: {
    doubleNum (state) {
      return state.num * 2
    }
  }
}

這里面運用到了state,?mutations,actions,getters,modules 那這五個屬性分別代表什么意思呢?
?

  • state: vuex的基本數(shù)據(jù),用來存儲變量。?
  • getter:從基本數(shù)據(jù)(state)派生的數(shù)據(jù),相當于store的計算屬性;getter 的返回值會根據(jù)它的依賴被緩存起來,且只有當它的依賴值發(fā)生了改變才會被重新計算。
  • mutation:提交更新數(shù)據(jù)的方法,必須是同步的(如果需要異步使用action)。每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調(diào)函數(shù) (handler)?。?回調(diào)函數(shù)就是我們實際進行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù),提交載荷作為第二個參數(shù)。
  • action:和mutation的功能大致相同,不同之處在于:
  1. ?Action 提交的是 mutation,而不是直接變更狀態(tài);
  2. ?Action 可以包含任意異步操作。
  • modules:模塊化vuex,可以讓每一個模塊擁有自己的state、mutation、action、getters,使得結(jié)構(gòu)非常清晰,管理更為方便。

使用下面這兩種方法存儲數(shù)據(jù):
dispatch:異步操作,寫法: this.$store.dispatch(‘mutations方法名’,值)

commit:同步操作,寫法:this.$store.commit(‘mutations方法名’,值)


總結(jié)

使用vuex一共大致可以分為五步文章來源地址http://www.zghlxwxcb.cn/news/detail-501700.html

  1. 下載? ? ? ? ? npm i store -S
  2. 引入? ? ? ? ?import Vuex from 'vuex'
  3. 注冊? ? ? ? ?Vue.use(Vuex)
  4. 實例化? ? ??const store = new Vuex.Store({? //寫配置? ?})
  5. 掛載到vue實例? ??new Vue({
    ? store, // 掛載到vue實例上,這樣全部的組件都可以使用store
    ? render: h => h(App)
    }).$mount('#app')
    ?

到了這里,關(guān)于vuex 的基本用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Vue中axios的基本用法

    目錄 1.什么是axios? 2.axios的特征 3.axios在使用的時候需要注意的細節(jié)? 4.axios在vue中的實例運用(留言評論接口)? App.vue代碼 mian.js代碼 ? axios 是一個基于promise?用于瀏覽器和 nodejs 的 HTTP 客戶端。簡單的理解就是ajax的封裝 ? ? 從瀏覽器中創(chuàng)建 XMLHttpRequest ? ? 從?node.js 發(fā)出 htt

    2024年02月08日
    瀏覽(19)
  • Vuex的用法

    Vuex是一個專門為Vue.js應用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。使用Vuex可以讓我們更方便地管理組件之間的狀態(tài),以及更新狀態(tài)的方式。Vuex的使用步驟如下: 1. 安裝Vuex:使用npm或

    2024年02月11日
    瀏覽(18)
  • vuex中mapActions的概念及用法

    vuex中mapActions的概念及用法

    先看一下官方文檔對mapActions的描述: 簡單來說 mapActions 就是 將組件中的函數(shù)映射為對應的action 。 一般情況下我們會在組件中使用 this.$store.dispatch() 來觸發(fā) action ,想要調(diào)用多少個 action 就需要調(diào)用多少次 dispatch() ,而使用 mapActions 的話只需要 往 mapActions 中傳入與 action 同名

    2024年02月13日
    瀏覽(18)
  • Vue2-動態(tài)路由傳參的基本用法

    在Vue 2中,可以使用動態(tài)路由傳遞參數(shù)。動態(tài)路由參數(shù)允許你在路由路徑中包含占位符,這些占位符可以在路由被匹配時提取出來并作為參數(shù)傳遞給組件。 下面是一個使用Vue 2動態(tài)路由傳參的基本用法的例子: 首先,在路由配置文件(通常是 router/index.js )中定義一個帶有動

    2024年02月01日
    瀏覽(19)
  • 正則表達式、grep過濾工具、sed基本用法、sed基本操作指令、sed應用案例

    正則表達式、grep過濾工具、sed基本用法、sed基本操作指令、sed應用案例

    1.1 問題 本案例要求熟悉正則表達式的編寫,完成以下任務: 利用grep或egrep工具練習正則表達式的基本用法 1.2 方案 表-1 基本正則列表 表-2 擴展正則列表 1.3 步驟 實現(xiàn)此案例需要按照如下步驟進行。 步驟一:正則表達式匹配練習 1)基本正則表達式 測試 ^ $ [] [^] 測試 .

    2024年01月24日
    瀏覽(20)
  • Android : Room 數(shù)據(jù)庫的基本用法 —簡單應用_一_入門

    Android : Room 數(shù)據(jù)庫的基本用法 —簡單應用_一_入門

    Android Room 是 Android 官方提供的一個持久性庫,用于在 Android 應用程序中管理數(shù)據(jù)庫。它提供了一個簡單的 API 層,使得使用 SQLite 數(shù)據(jù)庫變得更加容易和方便。 以下是 Android Room 的主要特點: 對象關(guān)系映射 (ORM):Room 允許您將 Java 或 Kotlin 對象映射到數(shù)據(jù)庫表中。您可以定義數(shù)

    2024年04月09日
    瀏覽(20)
  • Vue.js 3.2 中 UseRouter 和 UseRoute 的用法詳解

    Vue.js 3.2 中 UseRouter 和 UseRoute 的用法詳解

    Vue.js 是一款流行的前端框架,由于其易用性和靈活性,在開發(fā)中得到了廣泛的應用。而在 Vue.js 3.2 中,新增了許多 Composition API,其中 UseRouter 和 UseRoute 可以用于路由管理,使得前端路由開發(fā)更加方便。 Vue.js 是一款流行的前端框架,由于其易用性和靈活性,在開發(fā)中得到了廣

    2024年02月16日
    瀏覽(16)
  • 【Vuex狀態(tài)管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

    【Vuex狀態(tài)管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

    在開發(fā)中,應用程序需要處理各種各樣的數(shù)據(jù),這些數(shù)據(jù)需要保存在應用程序中的某一個位置,對于這些數(shù)據(jù)的管理就稱之為是 狀態(tài)管理。 在前面是如何管理自己的狀態(tài)呢? 在Vue開發(fā)中,使用組件化的開發(fā)方式; 而在組件中定義data或者在setup中返回使用的數(shù)據(jù),這些數(shù)據(jù)稱

    2024年02月07日
    瀏覽(57)
  • Vuex的基本使用

    Vuex的基本使用

    Vuex 是vue中特別重要的一個技術(shù),專門在vue中實現(xiàn)集中式狀態(tài)(數(shù)據(jù))管理的一個vue插件,對vue應用中多個組件的共享狀態(tài)進行集中式的管理(讀/寫),也是一種組件間通信的方式,且適用于任意組件間通信 Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式 + 庫。它采用集中式存

    2024年02月11日
    瀏覽(16)
  • Vuex基本使用

    Vuex基本使用

    專門在 Vue 中實現(xiàn)集中式狀態(tài)(數(shù)據(jù))管理的一個Vue 插件,對vue應用中多個組件的共享狀態(tài)進行集中式的管理(讀/寫),也是一種組件間通信的方式,且適用于任意組件間通信。 多個組件依賴于同一狀態(tài) 來自不同組件的行為需要變更同一狀態(tài) vuex 管理的狀態(tài)對象 它應該是唯

    2024年02月16日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包