react Antd3以下实现年份选择器 YearPicker

项目antd版本低,没有直接可使用的年份选择器,参考此篇(使用antd实现年份选择器控件 - 掘金)

一开始在state里设置了time:

this.state = {
    isopen: false,
    time: null
}

在类似onChange事件里this.setState({time: value}),datepicker里传value属性:

确实每次选择完选择框里的值都变了,对应页面元素:

但是,getfieldvalue时发现value是选择框显示的值,不代表fieldvalue能get到的值。

改了下直接不用time这个state,直接暴力使用setFieldsValue修改,页面选择框显示的改了,真正的取值也改了。

最终版如下:

class YearPicker extends React.Component {
    constructor(props) {
        super(props)
    
        this.state = {
            isopen: false
        }
    }
    handlePanelChange = value => {
        this.setState({isopen: false})
        this.props.onPanelChange && this.props.onPanelChange(value)
    }
    handleOpenChange = status => { 
        if (status) {
            this.setState({ isopen: true })
        } else {
            this.setState({ isopen: false })
        }
    } 
    clearValue = () => {
        this.props.onPanelChange && this.props.onPanelChange(null);
    }
    render() {
        return (
            
) } }

使用:
 

const onAAAPanelChange = value => {
    setFieldsValue({aaa: value});
};
const onBBBPanelChange = value => {
    setFieldsValue({bbb: value});
};

    {getFieldDecorator('aaa', {
        initialValue: moment(),  // 有默认值的情况
        rules: [{ required: true, message: '请选择年份' }],
    })(
        
    )}



    {getFieldDecorator('bbb', {
        validateTrigger: 'onBlur', 
    })(
        
    )}

效果:

react Antd3以下实现年份选择器 YearPicker_第1张图片

你可能感兴趣的:(前端,react,antd,datepicker,yearpicker)