我有一个<Avatar/>组件,其中的文本是 colored颜色 white, 如何确保其背景色是深色的,以便文本是动态生成的,因此可以看到文本?

Codesandbox-CLICK HERE

CODE:

  const colors = useMemo(() => {
    const randomColors = persons.map(() => `#${Math.floor(Math.random() * 16777215).toString(16)}`);
    return randomColors;
  }, [persons]);

推荐答案

  1. 每个 colored颜色 分量(红色、绿色、蓝色)的随机值为0-255.您需要限制为0 - 127才能确保生成的 colored颜色 更暗.

  2. 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;
}

在你的react 组件内部.

const colors = useMemo(() => {
    return randomColors(persons)
}, [persons]);

CODESANDBOX

Javascript相关问答推荐

Flutter:显示PDF和视频,但阻止下载

reaction如何在不使用符号的情况下允许多行返回?

通过实现regex逻辑自定义数据表搜索

如何提取Cypress中文本

使用useup时,React-Redux无法找到Redux上下文值

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

如何使用JavaScript将文本插入空div

在我的html表单中的用户输入没有被传送到我的google表单中

构造HTML表单以使用表单数据创建对象数组

实现JS代码更改CSS元素

单个HTML中的多个HTML文件

在表单集中保存更改时删除';禁用';

FileReader()不能处理Firefox和GiB文件

背景动画让网站摇摇欲坠

MongoDB中的嵌套搜索

在JavaScript中,有没有一种方法可以迭代字符串的词法标记?

如何让SVG图标在被点击和访问后改变 colored颜色 ,并在被访问后取消点击时恢复到原来的 colored颜色 ?

在没有任何悬停或其他触发的情况下连续交换图像

ComponentWillReceiveProps仍在React 18.2.0中工作