1.Antd中Select组件中的defaultValue问题
需求&问题
想要从后台请求数据后,动态填入Select组件中的defaultValue。结果数据值可以打印,但是select组件中无显示。
猜测
其实defaultvalue已经取到值了,但是因为下拉内容没渲染完成,所以没法实现展示默认值。
解决办法
百度。。。
还真百度到了!
引用:如果想实现非受控组件(用defaultValue),两个办法,第一个服务端没有返回数据的时候,不render Select,render一个占位的placeholder。另一个办法,给Select加一个key,值为defaultValue。
原理
小朋友你是否有很多个问号?为什么加key值可以呢。这就要从react开天辟地那时候开始说起了。。。
two thousand years later~
说完了,总结一下,就是diff算法相关的概念,key的赋值使得select组件重绘,此时就可以取到默认值对应的option了。
2.Antd中日期选择框设置动态禁止日期
首先,动态获取日期(注意日期格式为date)
<DatePicker
onChange={(date, dateString) => {
this.setState({
startDate: date,
});
}}
/>
其次,在需要禁用日期的选择中引入禁用方法
<DatePicker
disabledDate={(current) =>
this.disabledDate(current, this.state.startDate)
}
/>
// 禁用方法
disabledDate = (current, startDate) => {
return current && current < startDate;
};