mirror of
https://gitee.com/ant-design/ant-design.git
synced 2024-12-15 17:31:25 +08:00
161 lines
3.5 KiB
Markdown
161 lines
3.5 KiB
Markdown
---
|
|
order: 4
|
|
title:
|
|
zh-CN: 查询模式 - 确定类目
|
|
en-US: Lookup-Patterns - Certain Category
|
|
---
|
|
|
|
## zh-CN
|
|
|
|
[查询模式: 确定类目](https://ant.design/docs/spec/reaction#Lookup-Patterns) 示例。
|
|
|
|
## en-US
|
|
|
|
Demonstration of [Lookup Patterns: Certain Category](https://ant.design/docs/spec/reaction#Lookup-Patterns). Basic Usage, set datasource of autocomplete with `dataSource` property.
|
|
|
|
```jsx
|
|
import { Icon, Input, AutoComplete } from 'antd';
|
|
|
|
const Option = AutoComplete.Option;
|
|
const OptGroup = AutoComplete.OptGroup;
|
|
|
|
const dataSource = [
|
|
{
|
|
title: '话题',
|
|
children: [
|
|
{
|
|
title: 'AntDesign',
|
|
count: 10000,
|
|
},
|
|
{
|
|
title: 'AntDesign UI',
|
|
count: 10600,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: '问题',
|
|
children: [
|
|
{
|
|
title: 'AntDesign UI 有多好',
|
|
count: 60100,
|
|
},
|
|
{
|
|
title: 'AntDesign 是啥',
|
|
count: 30010,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: '文章',
|
|
children: [
|
|
{
|
|
title: 'AntDesign 是一个设计语言',
|
|
count: 100000,
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
function renderTitle(title) {
|
|
return (
|
|
<span>
|
|
{title}
|
|
<a
|
|
style={{ float: 'right' }}
|
|
href="https://www.google.com/search?q=antd"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
更多
|
|
</a>
|
|
</span>
|
|
);
|
|
}
|
|
|
|
const options = dataSource
|
|
.map(group => (
|
|
<OptGroup key={group.title} label={renderTitle(group.title)}>
|
|
{group.children.map(opt => (
|
|
<Option key={opt.title} value={opt.title}>
|
|
{opt.title}
|
|
<span className="certain-search-item-count">{opt.count} 人 关注</span>
|
|
</Option>
|
|
))}
|
|
</OptGroup>
|
|
))
|
|
.concat([
|
|
<Option disabled key="all" className="show-all">
|
|
<a href="https://www.google.com/search?q=antd" target="_blank" rel="noopener noreferrer">
|
|
查看所有结果
|
|
</a>
|
|
</Option>,
|
|
]);
|
|
|
|
function Complete() {
|
|
return (
|
|
<div className="certain-category-search-wrapper" style={{ width: 250 }}>
|
|
<AutoComplete
|
|
className="certain-category-search"
|
|
dropdownClassName="certain-category-search-dropdown"
|
|
dropdownMatchSelectWidth={false}
|
|
dropdownStyle={{ width: 300 }}
|
|
size="large"
|
|
style={{ width: '100%' }}
|
|
dataSource={options}
|
|
placeholder="input here"
|
|
optionLabelProp="value"
|
|
>
|
|
<Input suffix={<Icon type="search" className="certain-category-icon" />} />
|
|
</AutoComplete>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
ReactDOM.render(<Complete />, mountNode);
|
|
```
|
|
|
|
```css
|
|
.certain-category-search.ant-select-auto-complete .ant-input-affix-wrapper .ant-input-suffix {
|
|
right: 12px;
|
|
}
|
|
|
|
.certain-category-search-dropdown .ant-select-dropdown-menu-item-group-title {
|
|
color: #666;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.certain-category-search-dropdown .ant-select-dropdown-menu-item-group {
|
|
border-bottom: 1px solid #f6f6f6;
|
|
}
|
|
|
|
.certain-category-search-dropdown .ant-select-dropdown-menu-item {
|
|
padding-left: 16px;
|
|
}
|
|
|
|
.certain-category-search-dropdown .ant-select-dropdown-menu-item.show-all {
|
|
text-align: center;
|
|
cursor: default;
|
|
}
|
|
|
|
.certain-category-search-dropdown .ant-select-dropdown-menu {
|
|
max-height: 300px;
|
|
}
|
|
|
|
.certain-search-item-count {
|
|
position: absolute;
|
|
color: #999;
|
|
right: 16px;
|
|
}
|
|
|
|
.certain-category-search.ant-select-focused .certain-category-icon {
|
|
color: #108ee9;
|
|
}
|
|
|
|
.certain-category-icon {
|
|
color: #6e6e6e;
|
|
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
font-size: 16px;
|
|
}
|
|
```
|