@alicloud/console-components
Version:
Alibaba Cloud React Components
27 lines (26 loc) • 1.18 kB
JavaScript
import { useState, useLayoutEffect, } from 'react';
import ConfigProvider from '../config-provider';
var nextId = 0;
export default function useCssVar(cssVarName) {
var _a = useState(''), stateVarValue = _a[0], setStateVarValue = _a[1];
var refElement = ConfigProvider.useRefElement();
useLayoutEffect(function () {
var _a;
check();
var checkArr = (window.__recheck_css_var = (_a = window.__recheck_css_var) !== null && _a !== void 0 ? _a : []);
while (checkArr[nextId]) {
// 如果一个页面下有份此组件库(即有多个 nextId 指针),需要避免冲突
nextId++;
}
var id = nextId++;
checkArr[id] = check;
return function () {
delete checkArr[id];
};
function check() {
var _a, _b;
setStateVarValue((_b = (_a = window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, refElement).getPropertyValue(cssVarName)) !== null && _b !== void 0 ? _b : '');
}
}, [refElement, cssVarName]);
return stateVarValue.trim(); // 神蠢,居然之前的代码让每个使用者来 trim...
}