export function useCssVar()

in packages/rc-components/rc-components-pro/src/utils/useCssVar.ts [10:39]


export function useCssVar(cssVarName: string) {
  const [v, setV] = useState('');
  const refElement = ConfigProvider.useRefElement();

  useLayoutEffect(() => {
    check();

    // @ts-ignore
    const checkArr = (window.__recheck_css_var = window.__recheck_css_var ?? []);
    while (checkArr[nextId]) {
      // 如果一个页面下有份此组件库(即有多个nextId指针),需要避免冲突
      nextId++;
    }
    const id = nextId++;
    checkArr[id] = check;

    return () => {
      delete checkArr[id];
    };

    function check() {
      const val =
        window.getComputedStyle?.(refElement).getPropertyValue(cssVarName) ??
        '';
      setV(val);
    }
  }, [refElement, cssVarName]);

  return v;
}