@fruits-chain/react-native-xiaoshu
Version:
React Native UI library
30 lines (21 loc) • 579 B
text/typescript
import type { ThemeVarType } from './interface'
type Creator<T> = (v: ThemeVarType) => T
type KeyType = [ThemeVarType, Creator<any>]
const StyleMap: Map<KeyType, any> = new Map()
export const widthStyle = <T>(vars: ThemeVarType, creator: Creator<T>): T => {
let myStyle: T
for (let [key, value] of StyleMap) {
if (key[1] === creator) {
if (key[0] === vars) {
myStyle = value
} else {
StyleMap.delete(key)
}
}
}
if (!myStyle) {
myStyle = creator(vars)
StyleMap.set([vars, creator], myStyle)
}
return myStyle
}