问题
I am wondering if react-select could show html in rendered options. For example if fetched ajax option has <b>text</b>
, I would like to see text as bold in the dropdown menu instead of seeing <b>text</b>
.
I read the documentation and I didnt find any option for this.
Thank you
回答1:
You can rely on the optionComponent
prop of react-select and the dangerouslySetInnerHTML feature of React
And give to optionComponent
a component like this
const MyOptionComponent = props => <span dangerouslySetInnerHTML={{__html : props.option}} />;
回答2:
You can create either a custom optionRenderer
or optionComponent
for react-select
.
I'd recommend you optionRenderer
as it is more simple, if you only want to put convert to html. You can see an example here:
https://github.com/jquintozamora/react-taxonomypicker/blob/master/app/src/components/TaxonomyPicker/TaxonomyPicker.tsx#L135-L148
There is another example for optionComponent
here (just in case you want extra functionality):
https://github.com/JedWatson/react-select/blob/master/examples/src/components/CustomComponents.js#L15
回答3:
As simple as:
{ value: 'foo', label: <span dangerouslySetInnerHTML={{ __html: 'bar & foo' }} /> }
No option component, no option renderer, just simple jsx.
回答4:
I implemented the above solution and it broke the searchable feature. The label expects a string, not an element. -- There is actually a prop/function to do this
formatOptionLabel={function(data) {
return (
<span dangerouslySetInnerHTML={{ __html: data.label }} />
);
}}
Check out this post: React-Select: How to maintain search-ability while passing HTML to the label value in options
来源:https://stackoverflow.com/questions/49322522/react-select-how-to-display-html-in-options