国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Vuex 入門教程

來源:懂視網 責編:小采 時間:2020-11-27 22:21:58
文檔

Vuex 入門教程

Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想
推薦度:
導讀Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想

Vuex 是什么?

官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。

相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想到了一個比方!

比如某年級有5個小班,每個小班有25個同學,但是只有一個老師授課,假如5個小班就對應著5個組件,每個班的25個同學就相當于每個組件中的25條數(shù)據(jù),這個老師就相當于 vuex ,老師講的課就相當于每一條數(shù)據(jù)。要保證每個同學受到同樣的教育,就需要這個老師把每節(jié)課分別講5遍,還不能保證每個班的同學聽到的效果相同。一段時間后,老師覺得這樣特別麻煩還很累,就想了一個辦法,找了一個大教室,把這5個小班的同學合并到一起,這樣每個課程只需要講一次就好啦,而且還保證了每個班的同學聽到的效果相同。這就是 vuex 的作用,把各個組件中用到的數(shù)據(jù)統(tǒng)一管理,同步發(fā)放,省時省心省力。

那這個 vuex 怎么用呢?讓我們從一個簡單的 Vue 計數(shù)應用開始

一、基本用法

1. 初始化并創(chuàng)建一個項目

vue init webpack-simple vuex-demo
cd vuex-demo
npm install

2. 安裝 vuex

npm install vuex -S

3. 在 src 目錄下創(chuàng)建 store.js 文件,并在 main.js 文件中導入并配置

store.js 中寫入

import Vue from 'vue'
//引入 vuex 并 use
import Vuex from 'vuex'
Vue.use(Vuex)

main.js 文件

import Vue from 'vue'
import App from './App.vue'
import store from './assets/store' //導入 store 對象

new Vue({
 //配置 store 選項,指定為 store 對象,會自動將 store 對象注入到所有子組件中,在子組件中通過 this.$store 訪問該 store 對象 
 store, 
 el: '#app',
 render: h => h(App)
})

4. 編輯 store.js 文件

在應用 vuex 之前,我們還是需要看懂這個流程圖,其實很簡單。

vuex

① Vue Components 是我們的 vue 組件,組件會觸發(fā)(dispatch)一些事件或動作,也就是圖中的 Actions;
② 我們在組件中發(fā)出的動作,肯定是想獲取或者改變數(shù)據(jù)的,但是在 vuex 中,數(shù)據(jù)是集中管理的,我們不能直接去更改數(shù)據(jù),所以會把這個動作提交(Commit)到 Mutations 中;
③ 然后 Mutations 就去改變(Mutate)State 中的數(shù)據(jù);
④ 當 State 中的數(shù)據(jù)被改變之后,就會重新渲染(Render)到 Vue Components 中去,組件展示更新后的數(shù)據(jù),完成一個流程。

Vuex 的核心是 Store(倉庫),相當于是一個容器,一個 Store 實例中包含以下屬性的方法:

state 定義屬性(狀態(tài) 、數(shù)據(jù))

store.js 中寫入

// 定義屬性(數(shù)據(jù))
var state = {
 count:6
}
// 創(chuàng)建 store 對象
const store = new Vuex.Store({
 state
})

// 導出 store 對象
export default store;

方式1、 在 app.vue 中就能通過 this.$store 訪問該 store 對象 ,獲取該 count 。

<template>
 <div id="app">
 //把 count 方法直接寫入,可自己執(zhí)行
 <h1>{{count}}</h1>
 </div>
</template>

<script>
export default {
 name: 'app',
 computed:{
 count(){
 //返回獲取到的數(shù)據(jù)
 return this.$store.state.count
 }
 }
}
</script>

方式2、vuex 提供的 mapGetters 和 mapActions 來訪問

mapGetters 用來獲取屬性(數(shù)據(jù))

① 在 app.vue 中引入 mapGetters

import {mapGetters} from 'vuex'

② 在 app.vue 文件的計算屬性中調用 mapGetters 輔助方法,并傳入一個數(shù)組,在數(shù)組中指定要獲取的屬性  count

<script>
import {mapGetters,mapActions} from 'vuex'
export default {
 name: 'app',
 computed:mapGetters([
 //此處的 count 與以下 store.js 文件中 getters 內的 count 相對應
 'count'
 ])
}
</script>

③ 在 store.js 中定義 getters 方法并導出

getters 用來獲取屬性

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 定義屬性(數(shù)據(jù))
var state = {
 count:6
}
// 定義 getters
var getters={
 //需要傳個形參,用來獲取 state 屬性
 count(state){
 return state.count
 }
}
// 創(chuàng)建 store 對象
const store = new Vuex.Store({
 state,
 getters
})

// 導出 store 對象
export default store;

這樣頁面上就會顯示傳過來的數(shù)據(jù)了!接下來我們來通過動作改變獲取到的數(shù)據(jù)

④在 store.js 中定義 actions 和 mutations 方法并導出

actions 定義方法(動作)

commit 提交變化,修改數(shù)據(jù)的唯一方式就是顯示的提交 mutations

mutations 定義變化,處理狀態(tài)(數(shù)據(jù))的改變

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 定義屬性(數(shù)據(jù))
var state = {
 count:6
}

// 定義 getters
var getters={
 count(state){
 return state.count
 }
}

// 定義 actions ,要執(zhí)行的動作,如流程的判斷、異步請求
const actions ={
 // ({commit,state}) 這種寫法是 es6 中的對象解構
 increment({commit,state}){
 //提交一個名為 increment 的變化,名字可自定義,可以認為是類型名,與下方 mutations 中的 increment 對應
 //commit 提交變化,修改數(shù)據(jù)的唯一方式就是顯式的提交 mutations
 commit('increment') 
 }
}

// 定義 mutations ,處理狀態(tài)(數(shù)據(jù)) 的改變
const mutations ={
 //與上方 commit 中的 ‘increment' 相對應
 increment(state){
 state.count ++;
 }
}
// 創(chuàng)建 store 對象
const store = new Vuex.Store({
 state,
 getters,
 actions,
 mutations
})

// 導出 store 對象
export default store;

⑤ 在 app.vue 中引入 mapActions ,并調用

mapActions 用來獲取方法(動作)

import {mapGetters,mapActions} from 'vuex'

調用 mapActions 輔助方法,并傳入一個數(shù)組,在數(shù)組中指定要獲取的方法 increment

<template>
 <div id="app">
 //這個 increment 方法與下面 methods 中的 increment 相對應
 <button @click="increment">增加</button>
 <button>減少</button>
 <h1>{{count}}</h1>
 </div>
</template>

<script>
import {mapGetters,mapActions} from 'vuex'
export default {
 name: 'app',
 computed:mapGetters([
 'count'
 ]),
 methods:mapActions([
 //該 increment 來自 store.js 中導出的 actions 和 mutations 中的 increment 
 'increment',
 ])
}
</script>

這樣就能通過 button 來改變獲取到的 count 了。

看起來確實是挺繞的,需要在理解了原理的情況下,再細細琢磨,加深理解。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vuex 入門教程

Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想
推薦度:
標簽: VUE 入門 入門教程
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产视频一区二区三区四区 | 亚洲伊人电影 | 欧美日韩视频 | 日韩电影一区二区 | 国产在线看不卡一区二区 | 精品亚洲一区二区 | 午夜国产电影 | 午夜黄色在线观看 | 国产欧美一区二区三区精品 | 国产免费高清视频在线观看不卡 | 免费国产叼嘿视频大全网站 | 欧美日韩亚洲色图 | 91福利国产在线观一区二区 | 久久精品国产一区二区三区日韩 | 国产精品久久久久久久久久久不卡 | 国产日韩欧美中文 | 日本一区二区三区免费在线观看 | 国产精品久久久久久久久99热 | 国产成人精品一区二三区2022 | 欧美日韩亚洲色图 | 午夜精品一区二区三区免费视频 | 亚洲日本乱码中文论理在线电影 | 在线不卡日韩 | 最新精品在线视频 | 国产亚洲视频在线 | 国产第二十页 | 国产精品一区二区三区高清在线 | 成人a网 | 国产日韩欧美在线 | zozozo欧美人禽交另类视频 | 久久久国产这里有的是精品 | 国产精品第4页 | 日韩在线视频线视频免费网站 | 欧美精品小视频 | 国内精品一区二区2021在线 | 国产精品第1页在线观看 | 日韩精品免费 | 一区二区三区视频在线观看 | 色另类| 亚洲国产一区二区三区 | 99久久国内精品成人免费 |