Vuex ID生成器

时间:2020-05-07 14:27:27

标签: vue.js vuex

我正在尝试为我的组件生成唯一的ID。

我认为,由于它是全局的,因此最好将其放在Vuex中,并在状态中添加一个lastGeneratedID: 0之类的字段,并使用增加该值的突变。

现在,当一个组件想要拥有一个新的ID时,它必须先读取该值,然后递增,总是在这种情况下,总是执行这两种操作,否则会变得混乱。

是否可以通过某种方式将这两个功能集中在一个函数中(最好不仅在$root实例上),还是应该不做这种事情?

还是应该仅将字段命名为lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing? :D

1 个答案:

答案 0 :(得分:1)

为什么不先调用突变,增加ID然后读取它。 JS是单线程的,因此您不能有赛车条件。

this.$store.commit('INCREMENT_ID')

const myId = this.$store.state.id

您可以将这两行打包在另一个函数中,而仅调用该函数。

export default getNewID = () => {
 store.commit('INCREMENT_ID')

 return store.state.id
}

我假设您正在从包装以及import商店中导出商品。

一种替代方法是生成唯一的ID,因此您无需跟踪生成的ID。您可以使用this

这样的uuid程序包