如何在vue中将数据(在本例中是数组和数字)作为prop传递给另一个路由?

sczxawaw  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(151)

所以我在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”**的请求,我希望来自 HomeViewcarttotal作为props发送到 CheckoutView

dba5bblo

dba5bblo1#

你可以用Vue 3轻松地完成这一点。根据你的评论,看起来你在寻找一个直接的解决方案,而不需要使用像pinia或vuex这样的状态管理工具。你可以这样做:创建一个名为cart.js的文件,并将其放入名为store的文件夹中。在该文件中,处理与全局购物车状态相关的所有逻辑(使用ref和reactive),然后导出它。
下面是一个例子,cart.js

import { reactive } from "vue";

export const cart = reactive([]);

export const addToCart = (item) => {
  cart.push(item);
};

字符串
现在可以将此状态逻辑从cart.js导入到任何页面组件中。
检查此demo code

相关问题