reactjs - 在 Material UI 中,我如何动态地将颜色传递给我的样式?

标签 reactjs material-ui

React 和 Material UI 的新手 我不知道如何正确地动态传递颜色我从 JSON 文件中提取,但在我的搜索、StackOverflow 或文档中找不到很好的引用。

研究

尝试

给定 JSON 文件:

[
  {
    "label": "Home",
    "href": "/",
    "colorHover": ""
  },
  {
    "label": "Monday",
    "href": "/mon",
    "colorHover": "#35c5bd"
  },
  {
    "label": "Tuesday",
    "href": "/tues",
    "colorHover": "#fa8b25"
  },
  {
    "label": "Wednesday",
    "href": "/wed",
    "colorHover": "#f26531"
  }
]

我将它放入我的组件中并循环遍历它:

  const getDrawerChoices = () => {
    return headersData.map(({ label, href, colorHover }) => {
      const colorChange = colorHover === '' ? 'inherit' : colorHover

      return (
        <Link
          {...{
            component: RouterLink,
            to: href,
            color: 'inherit',
            style: { textDecoration: 'none' },
            key: label,
          }}
        >
          <MenuItem className={menuItem.hover(colorChange)}>{label}</MenuItem>
        </Link>
      )
    })
  }

Material UI 样式:

const useStyles = makeStyles(colorChange => ({
  menuItem: {
    '&:hover': {
      backgroundColor: `${colorChange} !important`,
    },
  },
}))

但是我抛出了一个错误。我如何将颜色值动态传递给 useStyles 或我是否需要将其与 ?

最佳答案

您必须创建一个自定义的 makeStyle 将 prop 传递给每个键,如下所示:

const useStyles = makeStyles({
  root: (props) => ({
    "&:hover": {
      backgroundColor: props.hoverColor
    }
  })
});

我会留下一个sandbox link用我测试的和 link到文档。还有什么我能做的,请告诉我。

关于reactjs - 在 Material UI 中,我如何动态地将颜色传递给我的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65723780/

相关文章:

javascript - 如何在react-leaflet中调用fitBounds和getBounds?

javascript - 选择选项时 react 中的 <select> 标签不改变

reactjs - 如何在单文件模式下使用 dropzone?

javascript - 占位符图像无法通过卡片正确加载 [ReactJs]

javascript - 如何更改出现验证错误的选项卡的选项卡指示器颜色?

reactjs - 如何在 React 自定义元素中为 MUI Material v5 创建插入点以在 shadow dom 中挂载样式

reactjs - 如何使用 react-router 使用 Private Route?

reactjs - 如何让Material-UI V5自动生成:hover colors in custom color objects for buttons

reactjs - enzyme 不模拟 React Material-UI v1 上的更改事件 - 选择组件

javascript - 在 Material UI 中使用样式设置 <Box/> 类型的方法