zent
Version:
一套前端设计语言和基于React的实现
94 lines (82 loc) • 1.86 kB
Markdown
---
order: 13
zh-CN:
title: 标签多选
pla: 请选择
en-US:
title: Multiple Select with Tag
pla: Select options
---
```js
import { Select, Button, Notify } from 'zent';
class TagsDemo extends Component {
state = {
selected: ["1"],
data: [
{ value: '1', text: 'Option 1' },
{ value: '2', text: 'Option 2' },
{ value: '3', text: 'Option 3' },
]
};
reset = () => {
this.setState({
selected: []
});
};
upgradeData = () => {
this.setState({
data: [
{ value: '1', text: 'Option 1' },
{ value: '2', text: 'Option 2' },
{ value: '3', text: 'Option 3' },
{ value: '4', text: 'Option 4' }
]
});
};
increaseHandler = (event, item) => {
this.setState({
value: this.state.selected.push(item.value)
});
Notify.success(<span>The value of new added option was {item.value}.</span>);
}
deleteHandler = (item) => {
// 可以使用效率更高或者更优雅的数组定点删除方法,比如 lodash.remove
const newSelected = this.state.selected.filter(value => {
return value !== item.value;
});
this.setState({
selected: newSelected
});
Notify.success(<span>The value of new deleted option was {item.value}.</span>);
}
render() {
return (
<div>
<span>External State: {this.state.selected.join(',')}</span>
<br />
<br />
<Select
placeholder="{i18n.pla}"
data={this.state.data}
onChange={this.increaseHandler}
onDelete={this.deleteHandler}
className="zent-custom-select"
tags
filter={(item, keyword) => item.text.indexOf(keyword) > -1}
value={this.state.selected} />
<Button onClick={this.reset}>Reset</Button>
<Button onClick={this.upgradeData}>Refill Data</Button>
</div>
);
}
}
ReactDOM.render(
<TagsDemo />
, mountNode
);
```
<style>
.zent-custom-select {
min-height: 30px;
}
</style>