Есть страница с каталогом, все данные для элемента берутся из массива.
Есть роуты для детальной и каталога. Для детальной роут у меня динамический.
При клике на элемент - я сохраняю текущий элемент в store vuex и перехожу по роуту на детальной по динамическому пути.
Проблемы в следующем:
1) После перехода на детальную страницу - если обновить, то возникает ошибка, так как в store - текущий элемент не записан.
2) Если вручную прописать роут в строке браузера, то он не перейдет на нужный мне элемент.
3) Если я задам дефолтный текущий элемент (чтобы по первому пункту не было ошибки), то к странице не применяются стили почему-то.
Как надо организовать роутинг каталога + детальной элемента каталога, чтобы все правильно работало?
const meatFood = [
{
title: 'Говядина тушеная',
value: 'cow',
imgDetail: '/img/catalog/cow.png',
weight: 10,
cow: true,
pig: false,
bird: false,
},
{
title: 'Говядина вареная',
value: 'krot',
imgDetail: '/img/catalog/cow.png',
weight: 300,
cow: true,
pig: false,
},
const store = new Vuex.Store({
state:{
meatFood: meatFood,
currentFood: meatFood[0]
},
mutations:{
setCurrentFood(state, food){
state.currentFood = food;
console.log('state.currentFood: ', state.currentFood);
}
}
});
const router = new VueRouter({
mode: 'history',
routes:[
{
path: '/',
name: 'main',
component: MainPage
},
{
path: '/catalog',
name: 'catalog',
component: Catalog
},
{
path: '/catalog/:code',
name: 'detail',
component: Detail
},
{
path: '*',
name: 'notFound',
component: MainPage
}
]
})
А здесь я вешаю vue-router, чуть ниже метод:
<router-link :to="{name: 'detail', params: {code: food.value}}">
<div @click="setCurrentFood(food)" class="box-food">
<p>{{food.title}}</p>
</div>
</router-link>
data(){
return{
meatFood: this.$store.state.meatFood
}
},
methods: {
setCurrentFood(food){
this.$store.commit('setCurrentFood', food);
}
},