datapicker and citypicker base on MUI of picker
Using npm:
$ npm install --save react-pickers
Then with a module bundler like webpack that supports either CommonJS or ES2015 modules, use as you would anything else:
// using an ES6 transpiler, like babel import { DatePicker, CityPicker } from 'react-pickers' // not using an ES6 transpiler var DatePicker = require('react-pickers').DatePicker var CityPicker = require('react-pickers').CityPicker
import React, { Component } from 'react'; import { render } from 'react-dom'; import 'react-pickers/lib/css/picker.css' import { CityPicker, DatePicker } from 'react-picker' import city2 from '../lib/city-data' import city3 from '../lib/city-data-3' class App extends Component{ state = { showCityPicker: false, showCity2Picker:false, showCity3Picker:false, showDatePicker:false, showDatePicker2:false, singleData : [{ value: 'ywj', text: '董事长 叶文洁' }, { value: 'aaa', text: '总经理 艾AA' }, { value: 'lj', text: '罗辑' }, { value: 'ymt', text: '云天明' }, { value: 'shq', text: '史强' }, { value: 'zhbh', text: '章北海' }, { value: 'zhy', text: '庄颜' }, { value: 'gyf', text: '关一帆' }, { value: 'zhz', text: '智子' }, { value: 'gezh', text: '歌者' }], city2: city2, city3: city3 } showCityPicker(){ this.setState({showCityPicker: true }) } showCity2Picker(){ this.setState({showCity2Picker: true }) } showCity3Picker(){ this.setState({showCity3Picker: true }) } ok(){ this.setState({showCityPicker: false }) } cl(){ this.setState({showCityPicker: false }) } ok2(){ this.setState({showCity2Picker: false }) } cl2(){ this.setState({showCity2Picker: false }) } ok3(){ this.setState({showCity3Picker: false }) } cl3(){ this.setState({showCity3Picker: false }) } ok4(){ this.setState({showDatePicker: false }) } cl4(){ this.setState({showDatePicker: false }) } ok5(){ this.setState({showDatePicker2: false }) } cl5(){ this.setState({showDatePicker2: false }) } getData(ret){ console.log(ret); } getData2(ret){ console.log("你选择的城市是:" + ret[0].text + " " + ret[1].text); } getData3(ret){ console.log("你选择的城市是:" + (ret[0] || {}).text + " " + (ret[1] || {}).text + " " + (ret[2] || {}).text); } getData4(ret){ console.log('选择结果: ' + ret); } getData5(ret){ console.log('选择结果: ' + ret); } selectDate(){ this.setState({showDatePicker: true }) } selectDate2(){ this.setState({showDatePicker2: true }) } render(){ return ( <div> <h5 className="mui-content-padded">普通示例</h5> <button id='showUserPicker' className="mui-btn mui-btn-block" type='button' onClick={ this::this.showCityPicker }>一级选择示例 ...</button> <CityPicker visible={ this.state.showCityPicker } setData={this.state.singleData} getData={ this::this.getData } confirm={ this::this.ok } cancel={ this::this.cl } /> <h5 className="mui-content-padded">级联示例</h5> <button id='showCityPicker' className="mui-btn mui-btn-block" type='button' onClick={ this::this.showCity2Picker }>二级联动示例 ...</button> <CityPicker visible={ this.state.showCity2Picker } layer='2' setData={this.state.city2} getData={ this::this.getData2 } confirm={ this::this.ok2 } cancel={ this::this.cl2 } /> <div style={{ marginTop: '30px'}}></div> <button id='showCityPicker3' className="mui-btn mui-btn-block" type='button' onClick={ this::this.showCity3Picker }>三级联动示例 ...</button> <CityPicker visible={ this.state.showCity3Picker } layer='3' setData={this.state.city3} getData={ this::this.getData3 } confirm={ this::this.ok3 } cancel={ this::this.cl3 } /> <div className="mui-content-padded"> <h5 className="mui-content-padded">常规示例</h5> <button id='demo1' className="btn mui-btn mui-btn-block" onClick={ this::this.selectDate }>选择日期时间 ...</button> <DatePicker visible={ this.state.showDatePicker } getData={ this::this.getData4 } confirm={ this::this.ok4 } cancel={ this::this.cl4 } /> <h5 className="mui-content-padded">设定年份区间</h5> <button id='demo2' className="btn mui-btn mui-btn-block" onClick={ this::this.selectDate2 }>选择日期 ...</button> <DatePicker visible={ this.state.showDatePicker2 } options={{"type":"date","beginYear":2014,"endYear":2016}} getData={ this::this.getData5 } confirm={ this::this.ok5 } cancel={ this::this.cl5 } /> </div> </div> ) } } render( <App />, document.querySelector('#root') )
See more in the mui-picker
npm install cd example node server.js