尝试在react-select中添加图标到选项。我从文件england.svg
,germany.svg
导入了svg图标。我创建了customSingleValue
并将其放入
<Select components={{ SingleValue: customSingleValue }} />
显示标签,但不显示图标。
此处演示:https://stackblitz.com/edit/react-q19sor
import Select from 'react-select'
import { ReactComponent as IconFlagEngland } from "./england.svg";
import { ReactComponent as IconFlagGermany } from "./germany.svg";
const options = [
{ value: 'England', label: 'England', icon: <IconFlagEngland/> },
{ value: 'Germany', label: 'Germany', icon: <IconFlagGermany/> }
]
const customSingleValue = ({ options }) => (
<div className="input-select">
<div className="input-select__single-value">
{ options.icon && <span className="input-select__icon">{ options.icon }</span> }
<span>{ options.label }</span>
</div>
</div>
);
class App extends Component {
constructor() {
super();
this.state = {
name: 'React'
};
}
render() {
return (
<Select
defaultValue={ options [0] }
options={ options }
/*styles={ selectCustomStyles }*/
/*onChange={ changeSelectHandler }*/
components={ {SingleValue: customSingleValue } }
/>
);
}
}
render(<App />, document.getElementById('root'));
4条答案
按热度按时间qlckcl4x1#
我找到了一个解决问题的方法。我的方法与**@canda**的方法相似。
6l7fqoea2#
如果有人想在
react-select
中使用具有多个选择的图标,可以使用以下代码:bn31dyow3#
我认为问题是你实际上并没有导入SVG。如果你试图在代码中直接使用
<IconFlagGermany/>
,它会崩溃并显示以下消息:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
它目前没有崩溃,因为我认为你的
customSingleValue
函数没有按照你的意图工作(没有调查过它,但很肯定它被窃听了)。如果你想以这种方式导入SVG,你需要在Webpack(或你选择的bundler)中设置一个合适的加载器。可能是这样的:https://www.npmjs.com/package/react-svg-loader
然而,另一种解决方案是正确地将SVG导出为组件,就像从代码中派生的这个演示一样:https://stackblitz.com/edit/react-5gvytm
2uluyalo4#
这是我在@Penny Liu的帮助下做的
这个方法也奏效了