2015-08-06 12:06:05 +08:00
|
|
|
# 联动
|
|
|
|
|
|
|
|
- order: 6
|
|
|
|
|
|
|
|
省市联动是典型的例子。
|
|
|
|
|
2015-12-29 18:24:21 +08:00
|
|
|
推荐使用 [cascader](/components/cascader/) 组件。
|
|
|
|
|
2015-08-06 12:06:05 +08:00
|
|
|
---
|
|
|
|
|
|
|
|
````jsx
|
2015-10-28 20:55:49 +08:00
|
|
|
import { Select } from 'antd';
|
|
|
|
const Option = Select.Option;
|
2015-08-06 12:06:05 +08:00
|
|
|
|
2015-10-28 20:55:49 +08:00
|
|
|
const provinceData = ['浙江', '江苏'];
|
|
|
|
const cityData = {
|
2016-02-16 14:07:09 +08:00
|
|
|
浙江: ['杭州', '宁波', '温州'],
|
|
|
|
江苏: ['南京', '苏州', '镇江']
|
2015-08-06 12:06:05 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2015-10-28 20:55:49 +08:00
|
|
|
const App = React.createClass({
|
2015-08-06 12:06:05 +08:00
|
|
|
getInitialState() {
|
|
|
|
return {
|
2015-08-20 17:27:40 +08:00
|
|
|
cities: cityData[provinceData[0]],
|
2016-01-07 16:29:12 +08:00
|
|
|
secondCity: cityData[provinceData[0]][0]
|
2015-08-06 12:06:05 +08:00
|
|
|
};
|
|
|
|
},
|
|
|
|
handleProvinceChange(value) {
|
|
|
|
this.setState({
|
2015-08-20 17:27:40 +08:00
|
|
|
cities: cityData[value],
|
2016-01-07 16:29:12 +08:00
|
|
|
secondCity: cityData[value][0]
|
2015-08-20 17:27:40 +08:00
|
|
|
});
|
|
|
|
},
|
|
|
|
onSecondCityChange(value) {
|
|
|
|
this.setState({
|
|
|
|
secondCity: value
|
2015-08-06 12:06:05 +08:00
|
|
|
});
|
|
|
|
},
|
|
|
|
render() {
|
2016-01-23 15:22:16 +08:00
|
|
|
const provinceOptions = provinceData.map(province => <Option key={province}>{province}</Option>);
|
|
|
|
const cityOptions = this.state.cities.map(city => <Option key={city}>{city}</Option>);
|
2016-01-07 16:29:12 +08:00
|
|
|
return (
|
|
|
|
<div>
|
2016-01-27 16:44:50 +08:00
|
|
|
<Select defaultValue={provinceData[0]} style={{ width: 90 }} onChange={this.handleProvinceChange}>
|
2016-01-07 16:29:12 +08:00
|
|
|
{provinceOptions}
|
|
|
|
</Select>
|
2016-01-27 16:44:50 +08:00
|
|
|
<Select value={this.state.secondCity} style={{ width: 90 }} onChange={this.onSecondCityChange}>
|
2016-01-07 16:29:12 +08:00
|
|
|
{cityOptions}
|
|
|
|
</Select>
|
|
|
|
</div>
|
|
|
|
);
|
2015-08-06 12:06:05 +08:00
|
|
|
}
|
|
|
|
});
|
2015-12-29 12:08:58 +08:00
|
|
|
ReactDOM.render(<App />, mountNode);
|
2015-08-06 12:06:05 +08:00
|
|
|
````
|