首页 > 解决方案 > Vuex ID 生成器

问题描述

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

我想,既然它是全局的,最好把它放在 Vuex 中,在 state 中有一个字段lastGeneratedID: 0,以及一个增加这个值的突变。

现在,当一个组件想要有一个新的 ID 时,它必须先读取值然后递增,总是在这个 oder 中,总是执行两个操作,否则事情会变得一团糟。

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

还是我应该只命名该字段lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing?:D

标签: vue.jsvuex

解决方案


你为什么不先调用突变,增加 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。你可以使用这样的 uuid


推荐阅读