lx-music-desktop/src/renderer/utils/vueTools.js
2021-12-03 22:11:11 +08:00

79 lines
1.3 KiB
JavaScript

import {
ref,
reactive,
computed,
watch,
watchEffect,
nextTick,
onMounted,
onBeforeUnmount,
toRaw,
useCssModule,
toRef,
toRefs,
shallowRef,
unref,
markRaw,
onBeforeUpdate,
onUpdated,
} from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { useStore } from 'vuex'
import { useI18n } from 'vue-i18n'
export const useState = name => {
const store = useStore()
return store.state[name]
}
export const useGetter = (...names) => {
const store = useStore()
return store.getters[names.join('/')]
}
export const useRefGetter = (...names) => {
const store = useStore()
return computed(() => store.getters[names.join('/')])
}
export const useAction = (...names) => {
const store = useStore()
return params => {
return store.dispatch(names.join('/'), params)
}
}
export const useCommit = (...names) => {
const store = useStore()
return params => {
return store.commit(names.join('/'), params)
}
}
export const markRawList = list => {
for (const item of list) {
markRaw(item)
}
return list
}
export {
nextTick,
onBeforeUnmount,
ref,
toRaw,
reactive,
watch,
watchEffect,
computed,
useRouter,
useRoute,
useI18n,
useCssModule,
toRef,
toRefs,
shallowRef,
unref,
onMounted,
markRaw,
onBeforeUpdate,
onUpdated,
}