antd
Version:
An enterprise-class UI design language and React components implementation
29 lines • 732 B
JavaScript
import { useEffect, useState } from 'react';
import { generateColor } from '../util';
function hasValue(value) {
return value !== undefined;
}
const useColorState = (defaultStateValue, option) => {
const {
defaultValue,
value
} = option;
const [colorValue, setColorValue] = useState(() => {
let mergeState;
if (hasValue(value)) {
mergeState = value;
} else if (hasValue(defaultValue)) {
mergeState = defaultValue;
} else {
mergeState = defaultStateValue;
}
return generateColor(mergeState || '');
});
useEffect(() => {
if (value) {
setColorValue(generateColor(value));
}
}, [value]);
return [colorValue, setColorValue];
};
export default useColorState;