J'utilise nuxtjs pour un projet de rendu côté serveur. J'ai une API REST d'où je voudrais mettre à jour le magasin Vuex et afficher la page. In the nuxtjs documentation for using Vuex store, it mentions using fetch api of the pages. J'essaie donc d'aller chercher la liste des articles pour l'API et de rendre la page.Les composants Nuxtjs Page ne sont pas mis à jour même si le magasin vuex est mis à jour
Vuex magasin:
const createStore =() => {
return new Vuex.Store({
state: {
article_list: []
},
mutations: {
updateArticleList (state, payload) {
state.article_list = payload
console.log('article list length', state.article_list.length)
}
},
actions: {
mutateArticleList ({commit}, payload) {
api.get_articles()
.then((data) => {
commit('updateArticleList', data)
})
}
}
})
}
Dans les pages/index.vue:
<template>
<div>
<button @click="update">Update</button>
<p v-for="article in articles" :key="article.id">Article</p>
</div>
</template>
<script>
export default {
fetch ({store}) {
store.dispatch('mutateArticleList')
},
computed: {
articles() {
return this.$store.state.article_list
}
},
methods: {
update() {
this.$store.dispatch('mutateArticleList')
}
}
}
</script>
Sur la console, je peux voir qui a été mis à jour
console.log('article list length', state.article_list.length) // 16
de article_list du magasin Mais sur la page index.vue, il n'y a pas d'articles. Même sur la console de la méthode d'index created
la article_list est 0
console.log('index created length', this.$store.state.article_list.length) // 0
Qu'est-ce que je manque ici? Pourrais-tu m'aider s'il te plaît.
Salut! J'ai mis à jour ma question avec votre code avec de légères modifications. Mais encore, la page ne met pas à jour. Dans le terminal, je peux voir le total des articles, mais dans le navigateur la longueur des articles est 0. J'ai ajouté un bouton supplémentaire pour mettre à jour/envoyer l'action pour obtenir des éléments de l'API. Lorsque je clique sur le bouton, pour obtenir les éléments, la page est mise à jour. Comment puis-je obtenir les résultats de l'API, puis afficher la page. – Robin
@Robin essayez d'appeler la méthode de mise à jour dans le hook created() et supprimez tout ce qui va chercher –