antd 日期组件如何只选择年份

项目中需要填写年份,产品觉得手动输入不太严谨,需要做成年份选择器。

去 antdesign 官网查看,发现有受控面板,通过组合 mode 和 onPanelChange 可以控制要展示的面板。

<DatePicker
  mode="year"
  placeholder="请选择年份"
  format="YYYY"
  onPanelChange={this.handlePanelChange}
/>
handlePanelChange = value => {
  console.log(">>>>>", value)
  // 处理得到的 value
  // ...
};

可以通过 onPanelChange 获取到时间,但是获取到时间之后面板并没有关闭。

再次去官网查看,发现有 open 属性和 onOpenChange 回调, open 属性控制弹层是否展开, onOpenChange 回调是弹出日历和关闭日历的回调。

 constructor(props) {
    super(props);
    this.state = {
      isopen: false,
      time: null,
    };
  }

  // 弹出日历和关闭日历的回调
  handleOpenChange = status => {
    // console.log(status)
    if (status) {
      this.setState({ isopen: true });
    } else {
      this.setState({ isopen: false });
    }
  };

  //得到 value 并处理
  handlePanelChange = value => {
    // console.log(">>>>>", value)
    //处理 value 操作
    //...
    //设置 isopen
    this.setState({
      isopen: false,
    });
  };

  //清除输入框中的值,点击控件的 x ,清除值操作
  clearValue = () => {
    this.setState({      
      time: null,
    })  
  };
  
  render() {
    return (
      <DatePicker
        value={this.state.time}
        open={this.state.isopen}
        mode="year"
        placeholder="请选择年份"
        format="YYYY"
        onOpenChange={this.handleOpenChange}
        onPanelChange={this.handlePanelChange}
        onChange={this.clearValue}
      />
    );
  }  

总结:通过 open 属性控制面板的开关,通过 onOpenChange 处理面板开关的回调,通过 onPanelChange 得到所选日期的值,通过 onChange 来清除选中的值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容