Я использую Vuex V3.0.1 с Vue.js v 2.5.17
То же действие в vuex выполняется медленно каждый второй раз.Если я помещаю один и тот же запрос axios внутри моего компонента и вызываю его из компонента, он постоянно составляет от 16 до 22 мс.Однако когда я отправляю в магазин, каждый второй запрос постоянно превышает 300 мс.
this.$store.dispatch('getQueryData', {QueryId: this.to.QueryId, params: data, CacheResults : this.to.CacheResults }).then(response => {
this.options = response.data
var arr = response.data
var defaultValue = this.model[this.field.key] || this.field.defaultValue || null
var valueprop = this.to.valueProp
var model = {}
if (defaultValue !== null)
{
this.options.forEach(function(value){
if (value[valueprop] == defaultValue){
model = value
}
})
this.model[this.field.key] = model
}
}, error => {
this.$store.commit('setError', error.response)
this.options = [];
})
И в моем магазине
getQueryData ({commit}, payload) {
const QueryIdStr = String(payload.QueryId)
if (store.state.queries[QueryIdStr]) {
var promise = Promise.resolve({data: store.state.queries[QueryIdStr]})
return promise
} else {
return new Promise((resolve, reject) => {
axios
.get('/scadservices/api/tablesv2/Query/' + payload.QueryId + '/data.json', {crossdomain: true, withCredentials: true, params: payload.params})
.then(response => {
var output = {
QueryId: payload.QueryId,
data: response.data
}
if (payload.CacheResults)
{
commit('setQueryData', output)
}
resolve(response)
}, error => {
commit('setError', error.response)
reject(error)
})
})
}
},
И в моих мутациях
setQueryData: (state, payload) => {
const QueryIdStr = String(payload.QueryId)
Vue.set(state.queries, QueryIdStr, payload.data)
}