所以我在Vue应用程序中设置了一个路由,我有一个HomeView视图和一个CheckoutView视图,我想将数据作为 prop 从 HomeView(“/”) 传递到 CheckoutView(“/checkout”),但我找不到方法来做,因为它们没有连接。确切地说,我想在每次用户请求**"/checkout”**路由时,将cart
数组和total
值从 HomeView 发送到 CheckoutView。
router/index.js
const routes = [
{
path: '/',
name: 'home',
component: HomeView,
},
{
path: '/checkout',
name: 'checkout',
component: () => import('../views/CheckoutView.vue')
}
]
字符串
HomeView.vue
export default {
import productsData from '@/assets/products.json';
name: 'HomeView',
data() {
return {
products: [],
cart: [],
total: 0,
}
},
created() {
this.products = productsData;
}
}
型
CheckoutView.vue
export default {
name: "CheckoutView",
props: {
cart: Array,
total: Number
}
}
型
显然,我简化了代码,只保留了基本内容,但总结一下:对于每个路由**"/checkout”**的请求,我希望来自 HomeView 的cart
和total
作为props发送到 CheckoutView。
1条答案
按热度按时间dba5bblo1#
你可以用Vue 3轻松地完成这一点。根据你的评论,看起来你在寻找一个直接的解决方案,而不需要使用像pinia或vuex这样的状态管理工具。你可以这样做:创建一个名为
cart.js
的文件,并将其放入名为store
的文件夹中。在该文件中,处理与全局购物车状态相关的所有逻辑(使用ref和reactive),然后导出它。下面是一个例子,
cart.js
字符串
现在可以将此状态逻辑从
cart.js
导入到任何页面组件中。检查此demo code