diff --git a/src/apis/index.ts b/src/apis/index.ts index e0bde458..6c470697 100644 --- a/src/apis/index.ts +++ b/src/apis/index.ts @@ -3,6 +3,7 @@ export * from './lifecycle' export * from './watch' export * from './computed' export * from './inject' +export { useCSSModule } from './useCssModule' export { createApp } from './createApp' export { nextTick } from './nextTick' export { createElement as h } from './createElement' diff --git a/src/apis/useCssModule.ts b/src/apis/useCssModule.ts new file mode 100644 index 00000000..368abd77 --- /dev/null +++ b/src/apis/useCssModule.ts @@ -0,0 +1,23 @@ +import { getCurrentInstance } from '../runtimeContext' +import { warn } from '../utils' + +const EMPTY_OBJ: { readonly [key: string]: string } = __DEV__ + ? Object.freeze({}) + : {} + +export const useCSSModule = (name = '$style'): Record => { + const instance = getCurrentInstance() + if (!instance) { + __DEV__ && warn(`useCSSModule must be called inside setup()`) + return EMPTY_OBJ + } + + const mod = (instance as any)[name] + if (!mod) { + __DEV__ && + warn(`Current instance does not have CSS module named "${name}".`) + return EMPTY_OBJ + } + + return mod as Record +}