const children = [];
reviewers.forEach((element, index) => {
children.push(
<Option
key={index}
value={element.checkUserId}
className={styles.icon1}
>
{element.name}
Option>
);
});
<Select
showSearch
defaultOpen={true}
mode="multiple"
onChange={this.onChange}
allowClear
style={{ width: 450 }}
placeholder="请输入关键字搜索"
>
{children}
Select>
:global {
.ant-select-item-option-content::before {
content: url(../../assets/images/btns/icon1.svg);
margin-right: 16px;
}
}
但是
:global
只有加到全局才能生效,我在select外面包个div,然后用div包括:global也不行,因为不想让样式产生污染,所以不知道还有没有什么办法,希望各位给予意见。
已经解决,解决方案:直接给option添加一个className,然后样式里面,直接给这个className添加伪元素,通过添加伪元素显示出来这个图标,这样既解决了图标的显示问题,又不会对原来的option里面的内容产生影响,具体代码如下:
js:
<Option
key={index}
value={element.checkUserId}
className={styles.icon1}
>
{element.name}
</Option>
less:
.icon1::before{
content: url(../../assets/images/btns/icon1.svg);
margin-right: 16px;
}
需要注意的是这个className也需要写在less文件的最外层,所以请注意让这个className不要重名,防止污染。
非常感谢大家给的意见,谢谢。
这个下拉得标签 不是 select标签 包含每个option标签吗?
能不能 在option里面 加一个div标签,div里面放img?
借助这个应该可以,之所以要写成全局是因为 下拉框的下拉面板是生成在与入口div同级的元素,你在这里页面单纯操作不了,借助这个自定义类名,可以给下拉面板添加类名,然后通过这个类名去操作伪元素就能生效
用dropdownRender,个性化定制下拉选项