美文网首页
使用Picker组件完成的自制地区选择组件

使用Picker组件完成的自制地区选择组件

作者: JohnYuCN | 来源:发表于2021-05-22 17:38 被阅读0次
import React, { Component } from 'react'
import { Button, Modal, Text, TextInput, View } from 'react-native'
import data from '@bang88/china_city_data'
import {Picker} from '@react-native-community/picker'

export default class App extends Component {
  state={address:'',visible:true}
  _addressChange=(p,c,d,dv)=>{
    this.setState({address:p,visible:false})
  }
  
  render(){
   return <View>
        <TextInput placeholder="请输入地址" value={this.state.address}/>
        <Button onPress={()=>this.setState({visible:true})} title="输入"/>
        <Modal visible={this.state.visible} transparent={true}>
          <View style={{flex:1,justifyContent:"center",alignItems:'center'}}>
            <View style={{width:300,height:300,backgroundColor:'antiquewhite'}}>
              <District onValueChange={this._addressChange}/>
            </View>
          </View>
        </Modal>
        
    </View>
  }
}

class District extends Component{
  state={province:data[0],city:data[0].children[0],district:data[0].children[0].children[0]}
  _confirm=()=>{
    this.props.onValueChange(this.state.province.label,this.state.city.label,this.state.district.label,this.state.district.value)
  }
  _proChnage=pro=>{
    this.setState({province:pro,city:pro.children[0],district:pro.children[0].children[0]})
  }
  _cityChange=city=>{
    this.setState({city,district:city.children[0]})
  }
  _districtChange=district=>{
    this.setState({district})
  }
  render() {
    return (
      <View>
        <Text>{this.state.province.label}---{this.state.city.label}--{this.state.district.label}</Text>
        <Button title="确认" onPress={this._confirm}/>
        <Picker mode="dropdown" selectedValue={this.state.province} onValueChange={this._proChnage}>
          {data.map((pro,index)=>{
            return <Picker.Item key={pro.value} label={pro.label} value={pro}/>
          })}
        </Picker>
        <Picker selectedValue={this.state.city} onValueChange={this._cityChange}>
            {this.state.province.children.map(city=><Picker.Item key={city.value} label={city.label} value={city}/>)}
        </Picker>
        <Picker selectedValue={this.state.district} onValueChange={this._districtChange}>
          {this.state.city.children.map(district=><Picker.Item key={district.value} label={district.label} value={district}/>)}
        </Picker>

      </View>
    )
  }
}

相关文章

网友评论

      本文标题:使用Picker组件完成的自制地区选择组件

      本文链接:https://www.haomeiwen.com/subject/ymqyjltx.html