国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vuex使用指南(轉(zhuǎn)載)

Freeman / 1394人閱讀

摘要:使用在的單頁面應(yīng)用中使用,需要使用調(diào)用插件。使用非常簡(jiǎn)單,只需要將其注入到根實(shí)例中。想要異步地更改狀態(tài)需要使用。將映射為也支持載荷將映射為將分割為模塊。的基本使用大致如此。

使用
在 Vue 的單頁面應(yīng)用中使用,需要使用Vue.use(Vuex)調(diào)用插件。
使用非常簡(jiǎn)單,只需要將其注入到Vue根實(shí)例中。
import Vuex from "vuex"
Vue.use(Vuex)
const store = new Vuex.Store({
state: {

count: 0

},
getter: {

doneTodos: (state, getters) => {
  return state.todos.filter(todo => todo.done)
}

},
mutations: {

increment (state, payload) {
  state.count++
}

},
actions: {
addCount(context) {

// 可以包含異步操作
// context 是一個(gè)與 store 實(shí)例具有相同方法和屬性的 context 對(duì)象

}
}
})
// 注入到根實(shí)例
new Vue({
el: "#app",
store,
template: "",
components: { App }
})

然后改變狀態(tài):
this.$store.commit("increment")

Vuex 主要有四部分:

state:包含了store中存儲(chǔ)的各個(gè)狀態(tài)。
getter: 類似于 Vue 中的計(jì)算屬性,根據(jù)其他 getter 或 state 計(jì)算返回值。
mutation: 一組方法,是改變store中狀態(tài)的執(zhí)行者。
action: 一組方法,其中可以含有異步操作。

state
Vuex 使用 state來存儲(chǔ)應(yīng)用中需要共享的狀態(tài)。為了能讓 Vue 組件在 state更改后也隨著更改,需要基于state創(chuàng)建計(jì)算屬性。
const Counter = {
template:

{{ count }}
,
computed: {

count () {
  return this.$store.state.count  // count 為某個(gè)狀態(tài)
}

}
}

getters
類似于 Vue 中的 計(jì)算屬性,可以在所以來的其他 state或者 getter改變后自動(dòng)改變。
每個(gè)getter方法接受 state和其他getters作為前兩個(gè)參數(shù)。
getters: {

doneTodos: (state, getters) => {
  return state.todos.filter(todo => todo.done)
}

}

mutations
前面兩個(gè)都是狀態(tài)值本身,mutations才是改變狀態(tài)的執(zhí)行者。mutations用于同步地更改狀態(tài)
// ...
mutations: {
increment (state, n) {

state.count += n

}
}

其中,第一個(gè)參數(shù)是state,后面的其他參數(shù)是發(fā)起mutation時(shí)傳入的參數(shù)。
this.$store.commit("increment", 10)

commit方法的第一個(gè)參數(shù)是要發(fā)起的mutation名稱,后面的參數(shù)均當(dāng)做額外數(shù)據(jù)傳入mutation定義的方法中。
規(guī)范的發(fā)起mutation的方式如下:
store.commit({
type: "increment",
amount: 10 //這是額外的參數(shù)
})

額外的參數(shù)會(huì)封裝進(jìn)一個(gè)對(duì)象,作為第二個(gè)參數(shù)傳入mutation定義的方法中。
mutations: {
increment (state, payload) {

state.count += payload.amount

}
}

actions
想要異步地更改狀態(tài),需要使用action。action并不直接改變state,而是發(fā)起mutation。
actions: {
incrementAsync ({ commit }) {

setTimeout(() => {
  commit("increment")
}, 1000)

}
}

發(fā)起action的方法形式和發(fā)起mutation一樣,只是換了個(gè)名字dispatch。
// 以對(duì)象形式分發(fā)
store.dispatch({
type: "incrementAsync",
amount: 10
})

action處理異步的正確使用方式
想要使用action處理異步工作很簡(jiǎn)單,只需要將異步操作放到action中執(zhí)行(如上面代碼中的setTimeout)。
要想在異步操作完成后繼續(xù)進(jìn)行相應(yīng)的流程操作,有兩種方式:

action返回一個(gè) promise。
而dispatch方法的本質(zhì)也就是返回相應(yīng)的action的執(zhí)行結(jié)果。所以dispatch也返回一個(gè)promise。

store.dispatch("actionA").then(() => {
// ...
})

利用async/await。代碼更加簡(jiǎn)潔。

// 假設(shè) getData() 和 getOtherData() 返回的是 Promise

actions: {
async actionA ({ commit }) {

commit("gotData", await getData())

},
async actionB ({ dispatch, commit }) {

await dispatch("actionA") // 等待 actionA 完成
commit("gotOtherData", await getOtherData())

}
}

各個(gè)功能與 Vue 組件結(jié)合
將state和getter結(jié)合進(jìn)組件需要使用計(jì)算屬性:
computed: {

count () {
  return this.$store.state.count 
  // 或者 return this.$store.getter.count2
}

}

將mutation和action結(jié)合進(jìn)組件需要在methods中調(diào)用this.$store.commit()或者this.$store.commit():
methods: {

changeDate () {
    this.$store.commit("change");
},
changeDateAsync () {
    this.$store.commit("changeAsync");
}

}

為了簡(jiǎn)便起見,Vuex 提供了四個(gè)方法用來方便的將這些功能結(jié)合進(jìn)組件。

mapState
mapGetters
mapMutations
mapActions

示例代碼:
import { mapState, mapGetters, mapMutations, mapActions } from "vuex"

// ....
computed: {
localComputed () { / ... / },
...mapState({

// 為了能夠使用 `this` 獲取局部狀態(tài),必須使用常規(guī)函數(shù)
count(state) {
  return state.count + this.localCount
}

}),
...mapGetters({

getterCount(state, getters) {
  return state.count + this.localCount
}

})
}
methods: {
...mapMutations({

   add: "increment" // 將 `this.add()` 映射為`this.$store.commit("increment")`
}),

...mapActions({

  add: "increment" // 將 `this.add()` 映射為 `this.$store.dispatch("increment")`
})

}

如果結(jié)合進(jìn)組件之后不想改變名字,可以直接使用數(shù)組的方式。
methods: {

...mapActions([
  "increment", // 將 `this.increment()` 映射為 `this.$store.dispatch("increment")`

  // `mapActions` 也支持載荷:
  "incrementBy" // 將 `this.incrementBy(amount)` 映射為 `this.$store.dispatch("incrementBy", amount)`
]),

}

將 store分割為模塊。
可以將應(yīng)用的store分割為小模塊,每個(gè)模塊也都擁有所有的東西:state, getters, mutations, actions。
首先創(chuàng)建子模塊的文件:
// initial state
const state = {
added: [],
checkoutStatus: null
}
// getters
const getters = {
checkoutStatus: state => state.checkoutStatus
}
// actions
const actions = {
checkout ({ commit, state }, products) {
}
}
// mutations
const mutations = {
mutation1 (state, { id }) {
}
}
export default {
state,
getters,
actions,
mutations
}

然后在總模塊中引入:
import Vuex from "vuex"
import products from "./modules/products" //引入子模塊

Vue.use(Vuex)
export default new Vuex.Store({
modules: {

products   // 添加進(jìn)模塊中

}
})

其實(shí)還存在命名空間的概念,大型應(yīng)用會(huì)使用。需要時(shí)查看文檔即可。Vuex的基本使用大致如此。

作者:胡不歸vac
鏈接:https://www.jianshu.com/p/aae...
來源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/104161.html

相關(guān)文章

  • vuex 2.0源碼解讀(一)

    摘要:簡(jiǎn)單點(diǎn)說,當(dāng)你使用構(gòu)造函數(shù),它實(shí)際上做了這么幾件事,首先定義給實(shí)例定義一些內(nèi)部屬性,之后就是綁定和的上下文對(duì)象永遠(yuǎn)是實(shí)例上,之后根據(jù)傳入的充實(shí)內(nèi)部狀態(tài)等等。函數(shù)執(zhí)行的結(jié)果是返回一個(gè)對(duì)象,屬性名對(duì)應(yīng)于傳入的對(duì)象或者數(shù)組元素。 轉(zhuǎn)載請(qǐng)注明出處 https://segmentfault.com/a/11... vuex2.0 和 vuex1.x 相比,API改變的還是很多的,但基本思想沒什么...

    luqiuwen 評(píng)論0 收藏0
  • Vue.js資源分享

    摘要:中文官網(wǎng)英文官網(wǎng)組織發(fā)出一個(gè)問題之后,不要暫時(shí)的離開電腦,如果沒有把握先不要提問。珍惜每一次提問,感恩每一次反饋,每個(gè)人工作還是業(yè)余之外抽出的時(shí)間有限,充分準(zhǔn)備好應(yīng)有的資源之后再發(fā)問,有利于問題能夠高效質(zhì)量地得到解決。 Vue.js資源分享 更多資源請(qǐng)Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/maid...

    vpants 評(píng)論0 收藏0
  • Vue運(yùn)行時(shí)全解析 - VueCLI3上手(一)

    摘要:可以譯作運(yùn)行時(shí)過程全面分析和解析,這個(gè)全面分析涉及到比較基礎(chǔ)的或者復(fù)雜的重要前端概念和中的概念等。注本篇是運(yùn)行時(shí)全解析系列文章的第一篇,首次發(fā)表于,友善轉(zhuǎn)載蟹蟹。附更多內(nèi)容請(qǐng)參考核心維護(hù)者蔣豪群同學(xué)的的公開課視頻 Vue Runtime Full Analysis - VueCLI3 Get Start VRFA: (Vue Runtime Full Analysis) 可以譯作vue...

    molyzzx 評(píng)論0 收藏0
  • 雜篇 - Vue豆瓣系列文章

    摘要:起初,項(xiàng)目使用的是,其提供的方法用著比較爽,由于項(xiàng)目的很多數(shù)據(jù)來自豆瓣的,直接上簡(jiǎn)單方便,跨域什么的不考慮。跨域問題,上面已經(jīng)介紹,在不能操控的豆瓣數(shù)據(jù)上,使用的是。 項(xiàng)目地址 在線演示 不識(shí)廬山真面目,只緣身在此山中。 大概一個(gè)月前,開源了Vue重構(gòu)豆瓣移動(dòng)端的項(xiàng)目,效果還可以,收到了很多小伙伴的反饋,話說是要寫一些文章的,但遲遲沒有動(dòng)筆,估計(jì)小伙伴們等的花都謝了,拖延癥是病,需要治...

    lijinke666 評(píng)論0 收藏0
  • Vue.js 服務(wù)端渲染業(yè)務(wù)入門實(shí)踐

    摘要:說起,其實(shí)早在出現(xiàn)之前,網(wǎng)頁就是在服務(wù)端渲染的。沒有涉及流式渲染組件緩存對(duì)的服務(wù)端渲染有更深一步的認(rèn)識(shí),實(shí)際在生產(chǎn)環(huán)境中的應(yīng)用可能還需要考慮很多因素。選擇的服務(wù)端渲染方案,是情理之中的選擇,不是對(duì)新技術(shù)的盲目追捧,而是一切為了需要。 作者:威威(滬江前端開發(fā)工程師)本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明作者及出處。 背景 最近, 產(chǎn)品同學(xué)一如往常笑嘻嘻的遞來需求文檔, 縱使內(nèi)心萬般拒絕, 身體倒是很誠實(shí)...

    miya 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Freeman

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<