reactjs - 在 ReactJs 中单击时设置活动单元格
问题描述
我有这个组件:
const arr = [];
const test = (date) => {
arr.push(date);
};
ReactDOM.render(
<Space direction="vertical" size={12}>
<DatePicker
onChange={test}
open={true}
showNow={false}
dateRender={(current) => {
const style = {};
if (arr.includes(current)) {
style.border = "1px solid red";
style.borderRadius = "50%";
}
return (
<div className="ant-picker-cell-inner" style={style}>
{current.date()}
</div>
);
}}
/>
</Space>,
document.getElementById("container")
);
接下来是这个想法:当我单击特定日期时,它应该应用下一个样式:
if (arr.includes(current)) {
style.border = "1px solid red";
style.borderRadius = "50%";
}
我现在不知道为什么,但它不起作用。我希望何时单击日期以应用这些样式,以及何时单击同一单元格以取消选择样式,但我的条件不起作用。谁能帮忙?
解决方案
onChange
事件回调将时刻对象作为参数返回,因此arr.includes(current)
将不起作用。您应该将 moment 对象转换为某种可以比较的类型。
format()
为了快速解决方法,您可以将其转换为带有函数的ISO 字符串。
同样要实现取消选择,您需要检查单击的日期是否已添加到数组中。
const test = (date) => {
const str = date.format();
if (arr.includes(str)) {
arr.splice(arr.indexOf(str), 1);
} else {
arr.push(str);
}
};
if (arr.includes(current.format())) {
推荐阅读
- powershell - 带有powershell命令更改字体样式的批处理文件
- grafana - Can Grafana in the same graph choose different measurement that is in influxdb with a different time range?
- html - Embedding the local external resources of an HTML page into a single HTML file
- solr - 无法从我的网页中的 Solr 服务器获取响应并出现访问控制错误
- drools - 车辆路径问题:时间窗 VRP 应考虑 TimeWindowedDepot.getDueTime()
- cordova - Best ways to automate Cordova Android App Build
- php - 在重定向到另一个页面之前显示弹出 div html
- python - Python aiohttp:在满足条件时取消异步执行
- android - 离线 webapp 有效,但不适用于移动 Android
- java - 您可以将方法设置为变量吗?