【发布时间】:2019-05-31 11:19:54
【问题描述】:
我想为react-select 设置全局样式。据我了解,我可以做两种方式:
-
使用
className和classNamePrefix,然后使用 CSS 定位元素。优点:我可以在任何地方使用相同的样式
缺点:每个新组件都必须使用完全相同的
className和classNamePrefix
例子:
className='react-select-container'
classNamePrefix="react-select"
结果:
<div class="react-select-container"> <div class="react-select__control"> <div class="react-select__value-container">...</div> <div class="react-select__indicators">...</div> </div> <div class="react-select__menu"> <div class="react-select__menu-list"> <div class="react-select__option">...</div> </div> </div> </div>
-
使用"Provided Styles and State"创建外部javascript文件
优点:比 CSS 更灵活
缺点:每个新组件都必须通过导入的外部文件使用样式属性。
例子:
const customStyles = { option: (provided, state) => ({ ...provided, borderBottom: '1px dotted pink', color: state.isSelected ? 'red' : 'blue', padding: 20, }), control: () => ({ // none of react-select's styles are passed to <Control /> width: 200, }), singleValue: (provided, state) => { const opacity = state.isDisabled ? 0.5 : 1; const transition = 'opacity 300ms'; return { ...provided, opacity, transition }; } } const App = () => ( <Select styles={customStyles} options={...} /> );
设置多个 react-select 组件样式的最佳方式是什么?是否可以全局设置样式,并且每个新的 react-select 组件都会自动使用该样式?
【问题讨论】:
标签: javascript reactjs react-select