При чтении вашего кода поведение, которое вы описываете, является нормальным.Я вижу два решения вашей проблемы (решение 2, вероятно, ближе к тому, что вы ищете):
Решение 1 - сохраните simType в вашем компоненте
если вам нужно получить доступ к simType откуда-то еще, чем внутри вашего компонента, и сохранить его в вашем состоянии, перейдите к решению 2
Когда ваш компонент будет создан, сохраните simtype в данных компонента.Это будет выглядеть так:
В вашем компоненте:
data () {
return {
simType: undefined //declare simType as one of your component's data property
}
},
created () {
store.dispatch('fetch_sim_Type', this.singleSim.typeid).then(simType => {
this.simType = simType //store the fetched simType
})
}
В ваших действиях vuex:
actions: {
fetch_sim_Type (context, typeid) {
//.. fetch the data based on typeid from DB
return fetchedData //pretty much the same except return the result
}
}
Решение 2 - сохраните simTypes в вашем состояниииндексируются по их идентификаторам
Сохраните выбранный вами simType по идентификатору, например:
state: {
simTypes: {} //simTypes is now plural, and is an empty object at first. It will later contain several simTypes, indexed by their respective Ids
},
actions: {
fetch_sim_Type (context, typeid) {
//.. fetch the data based on typeid from DB
context.state.simType[typeid] = fetchedData; // a fetched simtyped will be store in simTypes and can be accessed with the typeid as a key
}
}
, чтобы получить simType, вы можете написать метод получения vuex, например:
getters: {
getSimTypeById: (state) => (typeId) => {
return state.simTypes[typeId]
}
}
Итак, в вашем примере вычисляемый метод будет выглядеть так:
computed: {
simType () {
console.log("store.getters.getSimTypeById(this.singleSim.typeid): ", store.getters.getSimTypeById(this.singleSim.typeid)
return store.getters.getSimTypeById(this.singleSim.typeid);
}
},
Это решение, в качестве бонуса, позволяет вам получить simType только один раз, если несколько ваших предметов имеют одинаковый simType.