Last active
September 20, 2021 21:32
-
-
Save brendomaciel/93db8fed5a2de1c0d662220108996637 to your computer and use it in GitHub Desktop.
React Hook for simulate Vue's class name features
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const useClassName = (...args) => { | |
const parse = (classNames) => { | |
let actualClassNames = []; | |
if ('string' === typeof classNames) { | |
actualClassNames.push(classNames); | |
} | |
else if (Array.isArray(classNames)) { | |
for (const className of classNames) { | |
actualClassNames = actualClassNames.concat(parse(className)); | |
} | |
} | |
else if ('object' === typeof classNames) { | |
for (const className in classNames) { | |
if (!classNames[className]) { | |
continue; | |
} | |
actualClassNames.push(className); | |
} | |
} | |
return actualClassNames; | |
}; | |
let classNames = parse(args); | |
return classNames.join(' '); | |
}; | |
export default useClassName; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment