vue.js - Vuex ID 生成器
问题描述
我正在尝试为我的组件生成唯一 ID。
我想,既然它是全局的,最好把它放在 Vuex 中,在 state 中有一个字段lastGeneratedID: 0
,以及一个增加这个值的突变。
现在,当一个组件想要有一个新的 ID 时,它必须先读取值然后递增,总是在这个 oder 中,总是执行两个操作,否则事情会变得一团糟。
有没有一种方法可以以某种方式将这两个集中在一个函数中(最好不仅仅是在$root
实例上),还是我不应该做这种事情?
还是我应该只命名该字段lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing
?:D
解决方案
你为什么不先调用突变,增加 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包
推荐阅读
- macos - 为较旧的 Mac OS 版本构建 golang 应用程序的正确方法是什么?
- android - 华为定位包在室内无法获取到我的位置
- python - 该列表如何在 django 中返回值和键
- javascript - 在 Typescript 中使用外部 JS-Library(基本原语图)
- javascript - 如何使用 JavaScript 检查另一个元素中是否有一个元素
- java - 无法解析intellij中的符号jsonobject
- python - 图形大小随颜色条变化
- python - 在pygame中单击图像时如何运行函数?
- android-studio - 我不知道我的代码有什么问题
- kotlin - 发送不和谐心跳后客户端关闭连接,而不和谐响应 4002 错误代码