react-省市区三级联动

App.js代码

import React, { Component } from 'react'
import "./App.css"
export default class App extends Component {
  constructor(){
    super();
    this.state={
      list:[
        {
          id:1,name:"河北省",
          list:[
            {
              id:11,name:"邯郸市",
              list:[
                {id:121,name:"丛台区"},
                {id:122,name:"复兴区"},
                {id:123,name:"邯山区"},
                {id:124,name:"永年区"},
                {id:125,name:"肥乡区"},
                {id:126,name:"峰峰矿区"},
                {id:127,name:"肥乡区"},
                {id:128,name:"武安市"},
              ]
            },
            {
              id:12,name:"石家庄市",
              list:[
                {id:121,name:"长安区"},
                {id:122,name:"桥西区"},
                {id:123,name:"鹿泉区"},
                {id:124,name:"裕华区"},
                {id:125,name:"藁城区"},
                {id:126,name:"栾城区"},
                {id:127,name:"新华区"},
                {id:128,name:"井陉矿区"},
              ]
            }
          ]
        },
        {
          id:2,name:"北京",
          list:[
            {
              id:21,name:"北京市",
              list:[
                {id:211,name:"丰台区"},
                {id:212,name:"朝阳区"},
                {id:213,name:"房山区"},
                {id:214,name:"海淀区"},
                {id:215,name:"昌平区"},
                {id:216,name:"石景山区"},
                {id:217,name:"东城区"},
                {id:218,name:"西城区"},
                {id:219,name:"通州区"},
                {id:220,name:"门头沟区"},
                {id:221,name:"顺义区"},
                {id:222,name:"大兴区"},
                {id:223,name:"海淀区"},
                {id:224,name:"怀柔区"},
                {id:225,name:"平谷区"},
                {id:226,name:"密云区"},
                {id:227,name:"延庆区"},
              ]
            }
          ]
        },
        {
          id:3,name:"湖南",
          list:[
            {
              id:31,name:"长沙市",
              list:[
                {id:311,name:"芙蓉区"},
                {id:312,name:"天心区"},
                {id:313,name:"开福区"},
                {id:314,name:"雨花区"},
                {id:315,name:"望城区"},
                {id:316,name:"岳麋区"},
              ]
            }
          ]
        },
      ],
      ctiylist:[],    //城市集合
      arealist:[],    //区域集合
    }
  }
changeProvince=(id)=>{
  if(id){
    this.setState({
      ctiylist:this.state.list.filter(item=>item.id===id*1)[0]["list"],
      arealist:[]
    })
  }
}
changeArea=(id)=>{
  if(id){
    this.setState({
      arealist:this.state.ctiylist.filter(item=>item.id===id*1)[0]["list"],
    })
  }
}
  render() {
    return (
      <div className='bor'>
       <h3>省市区三级联动</h3>
       <select onChange={(e)=>{
        this.changeProvince(e.target.value)
       }}>
        <option value="">请选择省份</option>
        {this.state.list.map(item=>{
          return<option key={item.id} value={item.id}>{item.name}</option>
        })}
       </select>
       <select onChange={(e)=>{
        this.changeArea(e.target.value)
       }}>
        <option value="">请选择市区</option>
        {this.state.ctiylist.map(item =>{
          return <option key={item.id} value={item.id}>{item.name}</option>
        })}
       </select>
       <select>
        <option value="">请选择区域</option>
        {this.state.arealist.map(item=>{
          return <option key={item.id} value={item.id}>{item.name}</option>
        })}
       </select>
      </div>
    )
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

No DeBug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值