У меня есть компонент <Avatar/> и текст внутри него цветной white,
Как мне убедиться, что цвет фона темный, чтобы текст можно было увидеть, поскольку он генерируется динамически?
Codesandbox -----> НАЖМИТЕ ЗДЕСЬ
КОД:
const colors = useMemo(() => {
const randomColors = persons.map(() => `#${Math.floor(Math.random() * 16777215).toString(16)}`);
return randomColors;
}, [persons]);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Случайное значение для каждого компонента цвета (красный, зеленый, синий) составляет от 0 до 255. Вам необходимо ограничить значение от 0 до 127, чтобы генерируемые цвета были темнее.
padStart(2, '0') гарантирует, что каждый компонент имеет две цифры в шестнадцатеричной форме
utils.js
export function randomColors(persons) {
const darkColors = persons.map(() => {
// Generate each color component in the lower half (0-127) of the 0-255 range
const r = Math.floor(Math.random() * 128).toString(16).padStart(2, '0');
const g = Math.floor(Math.random() * 128).toString(16).padStart(2, '0');
const b = Math.floor(Math.random() * 128).toString(16).padStart(2, '0');
return `#${r}${g}${b}`;
});
return darkColors;
}
Внутри вашего реагирующего компонента.
const colors = useMemo(() => {
return randomColors(persons)
}, [persons]);
@Джозеф Конечно, если вы хотите использовать его в нескольких местах, вы можете переместить логику в функцию утилиты и использовать ее внутри хука useMemo.
@Джозеф, только что закончил, пожалуйста, проверь.
@Джозеф, пожалуйста, конечно, но не могли бы вы создать новый вопрос, поскольку он выходит за рамки этого вопроса, и поделиться со мной ссылкой?
понижение яркости поможет? если да, я могу создать для этого скрипт