ant design(3.x) 月份区间的选择
import React, { Component } from 'react'; import { DatePicker } from 'antd'; export default class extends Component { constructor(props) { super(props); this.state = { monthRange: '' } } handleChange = value => { console.log('value', value); // 无法获取值 this.setState({ monthRange: value }); }; handlePanelChange = (value, mode) => { console.log('value, mode: ', value, mode); this.setState({ monthRange: value, mode: [mode[0] === 'date' ? 'month' : mode[0], mode[1] === 'date' ? 'month' : mode[1]], }); }; render() { return ( <div> <DatePicker.RangePicker placeholder={['开始月份', '结束月份']} format="YYYY-MM" value={monthRange} onOpenChange={(status) => { console.log('status: ', status); if(!isOpen){ this.setState({isOpen: true}) } }} renderExtraFooter={() => <div style={{marginLeft: 250}}><Button size="small" type="primary" onClick={()=>this.setState({isOpen: false})}>确定</Button></div>} mode={['month', 'month']} open={isOpen} onChange={this.handleChange} onPanelChange={this.handlePanelChange} /> </div> ); } }
之前看到又说这样写的:
onOpenChange={(status) => { if(status){ this.setState({isopen: true}) } else { this.setState({isopen: false}) } }}
主要的几个问题,及解决方式。
- onChange方法无法触发获取到值,需要换成onPanelChang
- 面板的显示隐藏需要open属性进行手动控制
- onFocus、onBlur会导致闪开闪关,需要换成onOpenChange
- 通过自定义按钮去控制,选择开始和结束月份,再关闭面板
这样就是选择一个开始的月份,或者结束的月份就会导致面板关闭。
后面想着只是通过方法来打开面板,自定义按钮来关闭面板,这样可以清楚地看到我选择完的开始月份和结束月份,然后在点击自定义按钮来关闭,操作上会更好些。
官网上,也有对此说明,详细可以看如下地址。
链接: ant design 官网.