業務場景:
由於業務的個性化需求,我們經常會遇到需要覆蓋組件樣式的情況,這里舉個簡單的例子。 antd Select 在多選狀態下,默認會展示所有選中項,這里我們給它加一個限制高度,超過此高度就出滾動條
代碼:
// TestPage.less
.customSelect {
:global {
.ant-select-selection {
max-height: 51px;
overflow: auto;
}
}
}
// TestPage.js
import { Select } from 'antd';
import styles from './TestPage.less'
const Option = Select.Option;
const children = [];
for (let i = 10; i < 36; i++) {
children.push(<Option key={i.toString(36) + i}>{i.toString(36) + i}</Option>);
}
ReactDOM.render(
<Select
mode="multiple"
style={{ width: 300 }}
placeholder="Please select"
className={styles.customSelect}
>
{children}
</Select>
, mountNode);
有兩點需要注意:
-
引入的 antd 組件類名沒有被 CSS Modules 轉化,所以被覆蓋的類名
.ant-select-selection必須放到:global中。 -
因為上一條的關系,覆蓋是全局性的。為了防止對其他 Select 組件造成影響,所以需要包裹額外的 className 限制樣式的生效范圍。

