项目中遇到选择时间的功能,相当于这三个选择时间范围的按钮组成了一个单选框,默认只返回其中一个向后台获取数据。
需要在DatePicker.RangePicker绑定key,然后在修改到前面选择框的时候setKey(new Date()),页面会清空时间选择器组件的内容,但是修改后的值不会清空。
让前面两个单选取消选中也很简单,在更改时间选择器时将day值改为其他值即可,用checked属性判断是否需要选中,注意一定要把单选框的value绑定为day值才能生效。
const [start_time, setStart_time] = useState(""); //时间选择器开始时间
const [end_time, setEnd_time] = useState("");//时间选择器结束时间
const [day, setDay] = useState("7");//天数
const [key, setKey] = useState("");//清除时间选择器显示的内容
<Radio.Group
value={day}
checked={day == -1 ? false : true}
onChange={e => {
setKey(new Date())
setDay(e.target.value)
}}
>
<Radio.Button value="7">近一周</Radio.Button>
<Radio.Button value="30">近30天</Radio.Button>
</Radio.Group>
<DatePicker.RangePicker
key={key}
onchange={value=>{
setDay(-1) //时间选择器选中后让单选框清除选中
setStart_time(value[0]);//开始时间
setEnd_time(value[1]); //结束时间,根据后端需要的格式,自行转化
}
/>
现在是选择范围时间,前两个按钮的选中会消失
选择前两个按钮后面的时间会被清空显示,但是值默认还在,在传参的时候需自行去除