@serpent/common-react
Version:
serpent react common package
36 lines (35 loc) • 1.04 kB
JavaScript
import { useEffect } from 'react';
/**
* 给指定的 DOM 添加 className
* @param className 单个或多个 class 拼接而成的字符串
*/
export function useClassName(element, className) {
useEffect(function () {
var old = element.className;
var wrappedOld = wrap(old);
if (className && !wrappedOld.includes(wrap(className))) {
element.className = wrappedOld + ' ' + className;
return function () {
element.className = old;
};
}
return;
}, [className]);
}
/**
* 给 body 添加 className
* @param className 单个或多个 class 拼接而成的字符串
*/
export function useBodyClassName(className) {
return useClassName(document.body, className);
}
/**
* 给 html 添加 className
* @param className 单个或多个 class 拼接而成的字符串
*/
export function useHtmlClassName(className) {
return useClassName(document.documentElement, className);
}
function wrap(str) {
return str ? ' ' + str + ' ' : '';
}