vue.js - Vue路由器:如何使用更新商店在它导航之前。在商店更新之前导航
问题描述
我是新来的Vue
。我已经安装Vuex
并view-router
在我的Laravel
应用程序中。和正在按需要工作view-router
。router-link
但是,我想在单击Vue store
a 时放入 item 对象,router-link
以便我可以在详细视图中检索它并在那里显示所需的数据。
主页.vue
<template>
<div v-for="item in featuredItems" :key="item.id">
<router-link :title="item. name" :to="productUrl(item)">
...
</router-link>
</div>
</template>
<script>
data() {
return {
featuredItems: [...]
}
},
methods: {
productUrl(item) {
store.state.selectedProdcut = item;
return '/product/' + item.slug;
}
}
</script>
产品.vue
<template>
<div class="text-2xl text-green-800">
{{ currentItem.name }} <br />
<img :src="currentItem.photo" alt="" />
Product slug is: {{ $route.params.productSlug }}
</div>
</template>
<script>
import store from "../../store";
export default {
name: "Product",
data() {
return {
currentItem: {}
};
},
mounted() {
this.currentItem = this.getItem;
},
computed: {
getItem() {
return store.state.selectedProdcut;
}
}
};
</script>
Store.js
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
export default new Vuex.Store({
state: {
selectedProdcut: {}
},
mutations: {},
actions: {}
});
问题:
如果我尝试将当前项目保存在 store 内部productUrl
方法中,该方法由 的:to
属性调用router-link
,控制台会说正在创建一个无限循环。但是,如果我@click
在循环中添加一个属性,即
<div @click="storeSelectedProduct(item)" v-for="item in featuredItems" :key="item.id">
<router-link to="productUrl(item)">...</router-link>
</div>
该项目已保存在商店中,我在下一页中将其取回。但这不是我想要的工作方式。我想单击router-link
并将对象存储在 Store 中。我不希望容器div
有一个@click
单独的属性来处理存储!
Vuex Store
使用更新的正确方法是什么<router-link>
?
更新:
我没有将商店导出为app.js
. 现在我可以访问this.$store
以前无法访问的对象。
现在我可以使用以下方法<router-link :to="productUrl(item)">
methods: {
productUrl(item) {
this.$store.state.selectedProdcut = item;
return "/product/" + item.slug;
}
},
但是,现在的问题是最后一项只是添加到 Store 中,这是可以理解的。简而言之,我希望在单击 a 时更新商店<router-link>
,但在导航之前,商店将使用item
我正在传递的更新。这可能吗?
解决方案
推荐阅读
- javascript - MongooseError:查询已执行:Todo.updateOne({ _id: new ObjectId("612df063a8f
- swiper - 如何在 SwiperJS.com 上查看演示的源代码?下方链接
- windows - 用 4 位数字顺序重命名文件 - .bat
- java - 如何检查所有 CompleteableFuture 何时完成?
- ruby-on-rails-6 - 如何使用 Grape API / Rails 设置语言环境
- python - #ifdef python3 print_with_parantheses #else print_using_python2_style #endif
- php - 直接加载购物车页面时 WC()->cart->add_to_cart() 不起作用?
- android - 谷歌地图可以在模拟器上工作,但不能在 React 本机 APP 的 android 设备上工作
- ios - 有没有办法为与当前语言环境不同的 SF 符号使用特定语言环境?
- regex - PostgreSQL:.csv 正则表达式 - 测试字符串中的重复子字符串(数字)