设计react-select组件(https://github.com/JedWatson/react-select)选项的最佳方式是什么?

我可以很好地针对select本身,比如:

...
import Select from 'react-select'
...
const styles = {
  fontSize: 14,
  color: 'blue',
}
<Select
    options={[1,2,3,4]}
    placeholder={'Select something'}
    clearable={false}
    style={styles.select}
/>

问题是,展开select时的实际选项仍保持默认样式.如何针对这些样式选项?

这是我所说的一个例子.我可以设置占位符的样式,但不能设置选项:

推荐答案

react select v2 (update)

这个新版本引入了一个新的styles-api和一些其他重大变化.

自定义样式

使用stylesprops 使用自定义css设置单个组件的样式.

const colourStyles = {
  control: styles => ({ ...styles, backgroundColor: 'white' }),
  option: (styles, { data, isDisabled, isFocused, isSelected }) => {
    const color = chroma(data.color);
    return {
      ...styles,
      backgroundColor: isDisabled ? 'red' : blue,
      color: '#FFF',
      cursor: isDisabled ? 'not-allowed' : 'default',
      ...
    };
  },
  ...
};

export default () => (
  <Select
    defaultValue={items[0]}
    label="Single select"
    options={items}
    styles={colourStyles}
  />
);

现在,该项目的网站上有了更好的文档和更清晰的示例:

https://react-select.com/upgrade-guide#new-styles-api

https://react-select.com/home#custom-styles

https://react-select.com/styles#styles

react-select v1 ( old answer - deprecated )

自定义类名

您可以为组件提供一个自定义的类名props ,该props 将被添加到基础中.为外部容器 Select className.内置选项渲染器还支持自定义类名.

Add your custom className as a property to objects in the options array:
const options = [
    {label: "one", value: 1, className: 'custom-class'},
    {label: "two", value: 2, className: 'awesome-class'}
    // more options...
];
...
<Select options={options} />


MenuRender

MenuRender属性可用于覆盖选项的默认下拉列表.

optionClassName String用于选项的类名

示例:react-select/master/src/utils/defaultMenuRenderer.js

Reactjs相关问答推荐

For循环中的元素在Reaction中丢失挂钩

为什么我的React App.js只在页面刷新时呈现3次?

有没有办法将MUI网格元素与Flex-Start对齐?

无法使用Reaction日期选取器和Next.js设置初始日期

如何使用TouchStart/TouchEnd在Table ReactJS中交换位置?

自定义变量默认、聚焦和填充时所需TextField中标签的星号 colored颜色

在 React 中,为什么不将组件和钩子结合起来呢?

获取 不能显示为 的后代.错误,但不太确定如何构建我的代码以避免此警告

无法使用 MongoDB Atlas 和 Next.js 删除正确的帖子

如何在 Next Js 13 App Router 中添加 Favicon 图标?

如何使用 redux 和 react-plotly.js

当 React 中的状态发生变化时如何停止重新加载谷歌 map ?

一周前刚开始学习React,一直在调试为什么输入框在每次输入后都没有焦点

antd 找不到 comments

未捕获的类型错误:useSelector 不是函数

SonarCloud 代码覆盖率不适用于 Github Action

如何在 Reactjs 中判断受保护路由上的用户角色?

如何在 react-router-dom v6 中实现监听功能?

如何将本地视频文件上传到 Google Cloud

a.active 类在导入 x.scss 文件时有效,但在使用 x.module.scss 时无效