area-picker.js 1.57 KB
Newer Older
xwenliang's avatar
xwenliang committed
1
'use strict';
xwenliang's avatar
xwenliang committed
2 3 4 5 6 7 8
 
import React, {
	View,
	Text,
	TouchableOpacity,
	Dimensions
} from 'react-native';
xwenliang's avatar
xwenliang committed
9 10 11

import Picker from 'react-native-picker';

xwenliang's avatar
xwenliang committed
12
function createAreaData(area){
xwenliang's avatar
xwenliang committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
	let data = {};
	let len = area.length;
	for(let i=0;i<len;i++){
		let city = area[i]['city'];
		let cityLen = city.length;
		let ProvinceName = area[i]['name'];
		data[ProvinceName] = {};
		for(let j=0;j<cityLen;j++){
			let area = city[j]['area'];
			let cityName = city[j]['name'];
			data[ProvinceName][cityName] = area;
		}
	}
	return data;
};

export default class AreaPicker extends React.Component {

xwenliang's avatar
xwenliang committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
	constructor(props, context){
		super(props, context);
		this.state = {
			pickerData: [{
				'北京': {
					'北京': ['朝阳区']
				}
			}],
			selectedValue: ['北京', '北京', '朝阳区']
		};
		fetch('https://raw.githubusercontent.com/beefe/react-native-picker/master/demo/area.json').then(res => {
			res.json().then(data => {
				this.setState({
					pickerData: createAreaData(data)
				});
			});
		}, err => {
			console.log(err);
		});
	}

	_onPressHandle(){
xwenliang's avatar
xwenliang committed
53 54 55 56 57
		this.picker.toggle();
	}

	render(){
		return (
xwenliang's avatar
xwenliang committed
58 59 60 61 62 63
			<View style={{height: Dimensions.get('window').height}}>
				<TouchableOpacity style={{marginTop: 20}} onPress={this._onPressHandle.bind(this)}>
					<Text>点我</Text>
				</TouchableOpacity>
				<Picker
					ref={picker => this.picker = picker}
xwenliang's avatar
xwenliang committed
64
					style={{height: 320}}
xwenliang's avatar
xwenliang committed
65 66 67 68 69 70 71 72
					showDuration={300}
					pickerData={this.state.pickerData}
					selectedValue={this.state.selectedValue}
					onPickerDone={(pickedValue) => {
						console.log(pickedValue);
					}}
				/>
			</View>
xwenliang's avatar
xwenliang committed
73 74 75
		);
	}
};