I have a component, which looks like this:
export default {
name: 'todos',
props: ['id'],
created () {
this.fetchData()
},
data() {
return {
}
},
computed: {
todos () {
return this.$store.state.todos[this.id]
}
},
methods: {
async fetchData () {
if (!this.$store.state.todos.hasOwnProperty(this.id)) {
await this.$store.dispatch('getToDos', this.id)
}
}
}
}
This is what's happening:
- The component receives an
idvia props.
When the component loads I need to fetch some data based on the id
I have a
created()hook from where I call a functionfetchData()to fetch the data.In methods, the
fetchData()function dispatches an action to get the data. This gets and stores the data in Vuex store.The computed property
todosgets the data for this id.
The problem is that when the page first loads, the computed property todos shows up as undefined. If I change the page (client side) then the computed property gets the correct data from the store and displays it.
I am unable to understand why computed property doesn't update?
getToDosfunction aswell? - T. DirksfetchDatafunction from your root component (App.vue), so all other components can work with that data and usefetchDatain the components to update the data. - Bennett Dams