2017-04-12 71 views
1

我將vuex升級到2.0,並想知道在數據初始化之前它是否可能使用mapstate/getters?將vuex狀態綁定到data()中?

在Vuex 1.0中,vuex狀態將數據之前映射()那樣的話我可以叫this並且隨後狀態,我想訪問

import { mapGetters } from 'vuex' 

export default { 
    vuex: { 
    getters: { 
     userSettings: ({ settings }) => settings.userSettings, 
    } 
    }, 
    data: function() { 
    return { 
     sendEmails: this.userSettings.sendEmails 
    } 
    } 
} 

但在Vuex 2.0,我要做this.$store.state.settings.UserSettings.sendEmails

import { mapGetters, mapState } from 'vuex' 

export default { 
data: function() { 
    return { 
    sendEmails: this.$store.state.settings.UserSettings.sendEmails 
    } 
} 
computed: { 
    ...mapGetters({ 
    settings: "settings" 
    }) 
} 

有沒有辦法讓這個狀態在data()之前初始化?我有多個組件可以在數據初始化中使用狀態,並且需要撥打this.$store.state?我意識到我可以做一些解構,但我只是想知道我能否避免這種情況。

+0

'sendEmails'應該是一個計算的屬性,可以最終爲它創建的吸氣劑(在您的商店)。 – soju

+0

@soju你能解釋爲什麼它必須是一個計算屬性? –

+1

您是否閱讀過此文件:https://vuex.vuejs.org/en/state.html#getting-vuex-state-into-vue-components? – soju

回答

2

我會成立sendEmailsmounted

import { mapGetters, mapState } from 'vuex' 

export default { 
    data: function() { 
     return { 
     sendEmails: [] 
     } 
    } 

    computed: { 
     ...mapGetters({ 
     settings: "settings" 
     }) 
    }, 

    mounted: function() { 
     if (this.settings.UserSettings){ 
      this.sendEmails = this.settings.UserSettings.sendEmails 
     } 
    } 
}