React-select: How to display HTML in options

家住魔仙堡 提交于 2020-08-09 19:51:27

问题


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 &amp; 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!