Vuex ID生成器

问题描述 投票:0回答:1

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

我想,既然是全局性的,那就把它放在Vuex中吧,用一个类似于 lastGeneratedID: 0 的状态,以及一个增量这个值的突变。

现在,当一个组件想要有一个新的ID时,它必须先读取这个值,然后再递增,总是以这种方式,总是同时执行这两个操作,否则事情就会变得很混乱。

有没有办法让我把这两个功能集中到一个函数中(最好不要只在 $root 例如)还是我不应该做这种事情?

或者我应该把这个字段命名为 lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing? :D

vue.js vuex
1个回答
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了。你可以使用一个uuid包,比如 这个

© www.soinside.com 2019 - 2024. All rights reserved.