react地址三级联动


import React from "react"
import axios from "axios";
class CeshiContainer extends React.Component {
	constructor(props) {
		super(props);
		this.state = {
			data: [],
			province: "",
			city: "",
			county: "",
			provinces: [],
			cities: [],
			counties: []
		}
	}

	handleChangeprovince(e) {
		e.preventDefault()
		const data = this.state.data
		for(var i in data) {
			if(data[i].name == e.target.value) {
				this.setState({
					cities: data[i].city,
					counties: data[i].city[0].area,
					province: e.target.value,
					city: "",
					county: ""
				})
			}
		}
	}

	handleChangecity(e) {
		e.preventDefault()
		const cities = this.state.cities
		for(var i in cities) {
			if(cities[i].name == e.target.value) {
				this.setState({
					counties: cities[i].area,
					city: e.target.value,

				})
			}
		}
	}

	handleChangecounty(e) {
		e.preventDefault()
		this.setState({
			county: e.target.value
		})
	}
	render() {
		return(
			<div>
			{
			 this.state.provinces.length!=0
			 ?
     		   <p>
                    <select onChange={this.handleChangeprovince.bind(this)}>
                    <option></option>
                        {
                         this.state.provinces.map((i,index) => (
                                            <option value={i} key={index}>{i}</option>
                                        ))
                        	}
                    </select>
                    <select onChange={this.handleChangecity.bind(this)}>
                    <option></option>
                        {
                         this.state.cities.map((i,index) => (
                                            <option value={i.name} key={index}>{i.name}</option>
                                        ))
                        	}
                    </select>
                    <select onChange={this.handleChangecounty.bind(this)}>
                    <option></option>
                        {
                         this.state.counties.map((i,index) => (
                                            <option value={i} key={index}>{i}</option>
                                        ))
                        	}
                    </select>
                 </p>	
                 :<p>11111111</p>
               }
			<div>{this.state.province+this.state.city+this.state.county}</div>
     		</div>
		)
	}
	componentDidMount() {
		const provinces = []
		const data = []
		//请求API
		const url = "***********************";
		const resquest = axios.get(url);
		resquest.then(res => {
			Object.assign(res.data).map(i => {
				provinces.push(i.name)
				data.push(i)
			})
			this.setState({
				data: data,
				provinces: provinces,
				cities: data[0].city,
				counties: data[0].city[0].area
			})
		})

	}

}

export default CeshiContainer


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值