Я использую vue-cli@3
и vuex@3.0.1
.
Первый шаг: я открываю URL, и веб-сайт работает.Второй шаг: я обновляю сайт, , затем выдаются ошибки .Поэтому я не могу получить данные в получателях магазина по mapActions
и не могу использовать методы, которые я импортирую по mapActions
.Даже если я не могу получить доступ к своим данным, которые смонтированы на экземпляре Vue.
В vue-devtools
, состояние продолжает загружаться, когда я попал в беду, , как показано здесь .Я также попытался vue-cli@2
запустить тот же код, но снова безуспешно, поэтому я предположил, что причиной является Vuex.
Код магазина:
import Vue from 'vue'
import Vuex from 'vuex'
import util from '../lib/util'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
locale: localStorage.getItem('locale') || 'en',
langdrop: false,
loading: false,
langs: ['en', 'zh'],
modal: {
notice: false,
rule: false,
about: false
},
phonelink: false,
bet: 1,
myinfo: {
star: 0,
amount: 0,
staticEarn: 0,
staticEarnd: 0,
inviteEarn: 0,
inviteEarnd: 0
},
bonusPot: 0,
myInviteCode: 0,
inviteCode: util.getParams().code || 0
},
getters: {
myinfo: state => state.myinfo,
langdrop (state) {
return state ? state.langdrop : false
},
loading (state) {
return state ? state.loading : false
},
langs (state) {
return state.langs.filter(item => {
return item !== state.locale
})
},
locale (state) {
return state.locale
},
notice (state) {
return state.modal.notice
},
rule (state) {
return state.modal.rule
},
about (state) {
return state.modal.about
},
phonelink (state) {
return state.phonelink
},
bet (state) {
return state.bet
},
myInviteCode (state) {
return state.myInviteCode
},
inviteCode (state) {
return state.inviteCode
},
bonusPot (state) {
return state.bonusPot
}
},
actions: {
toggleLang (context) {
context.commit('ToggleLang')
},
setlocale (context, lang) {
localStorage.setItem('locale', lang)
context.commit('SetLocale', lang)
},
UpdateHubLoading (context) {
context.commit('UpdateHubLoading')
},
settingModal (context, type) {
context.commit('SettingModal', type)
},
togglePhoneLink (context) {
context.commit('TogglePhoneLink')
},
setBetValue (context, value) {
if (value > 30 || value < 1) {
return
}
value = Math.floor(value)
context.commit('SetBetValue', value)
},
setMyinfo (context, value) {
let target = {}
target.addr = value.addr
context.commit('SetMyinfo', target)
},
setMyInviteCode (context, code) {
context.commit('SetMyInviteCode', code)
},
setBonusPot (context, bonus) {
context.commit('SetBonusPot', util.bigNumbertoNumber(bonus, 18, 4))
}
},
mutations: {
ToggleLang (state) {
state.langdrop = !state.langdrop
if (state.langdrop === true) {
state.pendingdrop = false
}
},
SetLocale (state, lang) {
state.locale = lang
},
UpdateHubLoading (state) {
state.loading = !state.loading
},
SettingModal (state, type) {
let status = !state.modal[type]
if (status === true) {
state.modal = {
notice: false,
rule: false,
about: false
}
}
state.modal[type] = status
},
TogglePhoneLink (state) {
state.phonelink = !state.phonelink
},
SetBetValue (state, value) {
state.bet = value > 30 ? 30 : value
},
SetMyinfo (state, value) {
if (state) {
state.myinfo = value || {
star: 0,
amount: 0,
staticEarn: 0,
staticEarnd: 0,
inviteEarn: 0,
inviteEarnd: 0
}
}
},
SetMyInviteCode (state, code) {
state.myInviteCode = code || 0
},
SetBonusPot (state, bonus) {
state.bonusPot = bonus || 0
}
}
})
Код компонента:
created () {
this.getMyinfo()
},
methods: {
...mapActions(['setMyinfo', 'setBonusPot', 'setAddress']),
getMyinfo () {
if (!this.address) return
this.hasAddr = true
this.$Contract.methods.addrPly(this.address).call().then(res => {
this.setMyinfo(res)
})
},
getBonus () {
if (this.$Contract) {
this.$Contract.methods.bonusPot().call().then(res => {
this.setBonusPot(res)
})
}
}
}