我正在尝试为我的组件生成唯一的ID。
我认为,由于它是全局的,因此最好将其放在Vuex中,并在状态中添加一个lastGeneratedID: 0
之类的字段,并使用增加该值的突变。
现在,当一个组件想要拥有一个新的ID时,它必须先读取该值,然后递增,总是在这种情况下,总是执行这两种操作,否则会变得混乱。
是否可以通过某种方式将这两个功能集中在一个函数中(最好不仅在$root
实例上),还是应该不做这种事情?
还是应该仅将字段命名为lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing
? :D
答案 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程序包