【问题标题】:Change the color of MUI Autocomplete option更改 MUI 自动完成选项的颜色
【发布时间】:2021-01-18 03:27:00
【问题描述】:

我正在使用 Material UI 的 Autocomplete,并且我有一个带有属性颜色的列表。我必须在选项背景中使用相应的颜色逐个渲染选项。

这是一个例子:

import React from "react";
import TextField from "@material-ui/core/TextField";
import Autocomplete from "@material-ui/lab/Autocomplete";

export default function ComboBox() {
  return (
    <Autocomplete
      id="combo-box-demo"
      options={top100Films}
      getOptionLabel={option => option.title}
      style={{ width: 300 }}
      renderInput={params => {
        return (
          <TextField
            {...params}
            label="Combo box"
            variant="outlined"
            fullWidth
          />
        );
      }}
    />
  );
}

const top100Films = [
  { title: "The Shawshank Redemption", year: 1994, color: '#FF0000' },
  { title: "The Godfather", year: 1972, color: '#FF5555' },
  { title: "Avatar", year: 2010, color: '#FFFFFF' },
  // Plus a bunch more
];

【问题讨论】:

  • 您能详细说明您尝试过的方法和无效的方法吗
  • 我尝试使用带有背景样式的道具 ListboxProps,但它改变了所有列表

标签: css reactjs material-ui


【解决方案1】:

您可以使用renderOption 为最新版本的 MUI 中的每个选项有条件地呈现样式。

<Autocomplete
  renderOption={(props, option) => {
    const { title, color } = option;
    return (
      <span {...props} style={{ backgroundColor: color }}>
        {title}
      </span>
    );
  }}
  {...}
/>

现场演示

【讨论】:

    【解决方案2】:

    您可以像这样更改 CSS:

    .MuiAutocomplete-inputRoot[class*="MuiOutlinedInput-root"] {
        background: #ffff
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 2012-09-20
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 2021-11-29
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多