Javascript Vuex负载唯一ID重复两次(或更多)

Javascript Vuex负载唯一ID重复两次(或更多),javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我正在为一家商店制作购物车系统,希望向购物车添加一个产品,并在vuex中为其附加一个唯一的id。每个id对于产品实例都是唯一的(即,没有相同的产品具有相同的id,它们是完全不同的) 我添加了如下产品: ...mapActions({ addToCart: 'addToCart' }) 在Vuex中: addToCart: (state, payload) => { payload['uniqueId'] = uuid(); state.cart.push(payload)

我正在为一家商店制作购物车系统,希望向购物车添加一个产品,并在vuex中为其附加一个唯一的id。每个id对于产品实例都是唯一的(即,没有相同的产品具有相同的id,它们是完全不同的)

我添加了如下产品:

...mapActions({ addToCart: 'addToCart' })
在Vuex中:

addToCart: (state, payload) => {
    payload['uniqueId'] = uuid();
    state.cart.push(payload);
},
uuid()方法:

除了所有产品都继承了添加的最新产品的ID之外,一切都很好

state.cart
是一个对象数组


还使用npm包uuid尝试了这一点,得到了相同的结果。

我猜在提交变异时,您对
有效负载使用了相同的变量引用,因此无论何时更改一个,您都会更改所有变量

最简单的解决方法是打破引用。例如,在你的商店里

addToCart:(状态,有效负载)=>{
state.cart.push({
…有效载荷//
const uuid = () => {
    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    )
}