在定义自定义选项组件时,如何为react-select应用默认样式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在定义自定义选项组件时,如何为react-select应用默认样式?相关的知识,希望对你有一定的参考价值。

我是React noob,也是反应选择的新手(v2)。

我认为我们的方案非常简单。我们从Azure搜索(facet)中提取数据,并希望绑定到稍微定制的反应选择控件。

我们想:

  1. 添加徽章/药丸以显示下拉菜单中的计数。
  2. 避免循环返回数据以在反应选择选项中重写值和标签。

在这个例子的帮助下,我们得到了大部分的方式(这比官方文档IMO更有帮助):React-Select - Replacing Components for custom option content。唯一缺少的是应用默认的反应选择样式(例如:用于悬停)。

数据示例:

const myOptions = [
    { value: 'foo', count: 100 },
    { value: 'bar', count: 200 },

];

自定义控件示例:

const CustomOption = (props:any) => {
    const { innerProps, innerRef } = props;
    return (
        <article ref={innerRef} {...innerProps} >
            <div style={{display:"inline-block"}}>{props.data.value}</div>
            <span className="badge badge-light float-right" style={{display:"inline-block"}}>{props.data.count} </span>
        </article>
    );
};

有没有办法重用默认的反应选择样式?我在文档中遗漏了什么吗?

答案

你真的很布,但是让我告诉你如何保持react-select的原始风格和行为。

您没有为Option组件声明新容器,而是需要使用原始容器,并且只编辑如下内容:

const Option = props => {
  return (
    <components.Option {...props}>
      <div style={{ display: "inline-block" }}>{props.data.value}</div>
      <span
        className="badge badge-light float-right"
        style={{ display: "inline-block" }}
      >
        {props.data.count}{" "}
      </span>
    </components.Option>
  );
};

这里更新了代码的live example

以上是关于在定义自定义选项组件时,如何为react-select应用默认样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Vue.js 组件创建自定义样式属性

如何为 Jcrop 'setSelect' 选项指定自定义值?

如何为 Metro 开发制作自定义控件和组件?

如何为 JSF 自定义组件动态生成 CSS

android如何为自定义的类传递参数?

如何为android中的所有视图使用相同的自定义字体?