Я новичок в vuex
и до сих пор использую его.Например, у меня есть product
списки в моем состоянии store
.Когда я смотрю один product
, я звоню axios
с этим product.id
и фиксирую данные продукта в состоянии currentProduct
.Затем, если я просматриваю другой продукт, то страница отображается с состоянием currentProduct
, то есть сначала со старыми данными, затем после моих action
commits
.. затем она обновляется до вновь полученной currentProduct
, затем vue меняет мои данные представления на новыеданные.user
может ясно видеть, что старые данные заменяются новыми.Но я хочу загрузить страницу только после того, как новые данные будут отправлены на мою state
.
`store.js`
state :{
productList:{},
currentProduct:{
id:'',name:'',price:'','seller'
}
},
mutations:{
UPDATE_CURRENT_PRODUCT : (state, data) =>{
state.currentProduct = Object.assign({},state.currentProduct, data);
}
},
actions:{
fetchProducts(){
const response = fetch...... // logic to fetch product
commit('UPDATE_CURRENT_PRODUCT', response.data);
}
}
Моя страница рендеринга:
На этой странице отображаются спискимои продукты
'productList.vue'
<div v-for="product in productList" @click="viewProduct(product.id)">
<p>{{product.name}}</p>
</div>
computed(){
...mapState(['productList'])
},
methods:{
viewProduct(product_id){
this.$store.state.dispatch('fetchProducts', product_id);
}
}
На этой странице отображается вид этого конкретного продукта
`product.vue`
<div>
<p>{{currentProduct.name}}</p>
</div>
computed(){
...mapState(['currentProduct'])
}
В моем product.vue
отображаются первые старые данные, а затем через некоторое время новые данные заменяют их ...Чего-то не хватает ... Я хочу видеть новые данные напрямую, не видя замены старых данных новыми.Есть ли способ обойти vuex