UNPKG

@alicloud/console-components

Version:

Alibaba Cloud React Components

33 lines (32 loc) 1.45 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var config_provider_1 = __importDefault(require("../config-provider")); var nextId = 0; function useCssVar(cssVarName) { var _a = (0, react_1.useState)(''), stateVarValue = _a[0], setStateVarValue = _a[1]; var refElement = config_provider_1.default.useRefElement(); (0, react_1.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... } exports.default = useCssVar;