Vue.js Vuex ID生成器
我正在尝试为我的组件生成唯一的ID 我想,由于它是全局的,最好将它放在Vuex中,状态中有一个类似Vue.js Vuex ID生成器,vue.js,vuex,Vue.js,Vuex,我正在尝试为我的组件生成唯一的ID 我想,由于它是全局的,最好将它放在Vuex中,状态中有一个类似lastGeneratedID:0的字段,并有一个使该值递增的突变 现在,当一个组件想要有一个新的ID时,它必须先读取值,然后递增,总是在这个顺序中,总是执行这两个操作,否则事情会变得一团糟 有没有一种方法可以将这两个函数集中在一个函数中(最好不只是在$root实例上),或者我应该不做这种事情 或者我应该只命名字段LastGeneratedDalways在读取完DontYou't Dare Not
lastGeneratedID:0的字段,并有一个使该值递增的突变
现在,当一个组件想要有一个新的ID时,它必须先读取值,然后递增,总是在这个顺序中,总是执行这两个操作,否则事情会变得一团糟
有没有一种方法可以将这两个函数集中在一个函数中(最好不只是在$root
实例上),或者我应该不做这种事情
或者我应该只命名字段LastGeneratedDalways在读取完DontYou't Dare Not Incrementing
后将被递增: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
store
另一种方法是生成一个唯一的id,因此您不需要跟踪生成的id。您可以使用类似于的uuid包,因为我不能保证我和我的同事总能想到正确的顺序,甚至不能同时调用这两个操作。无论如何,谢谢你的软件包链接,听起来很简单!然后将该函数打包到另一个函数中,并只调用该函数。但在正常的Vue设置中,我应该将该函数放在哪里?我不想把它放在$root
组件中,你也不能向Vuex添加函数,我也不想要任何只返回承诺的东西,比如Actions创建一个新的js文件并导出它。在我的回答中,我使用了默认导出,但您可以使用命名导出。然后将该包导入任何需要的地方。