Skip to content

Instantly share code, notes, and snippets.

@brendomaciel
Last active September 20, 2021 21:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brendomaciel/93db8fed5a2de1c0d662220108996637 to your computer and use it in GitHub Desktop.
Save brendomaciel/93db8fed5a2de1c0d662220108996637 to your computer and use it in GitHub Desktop.
React Hook for simulate Vue's class name features
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