问题描述
我正在使用react-calendar-timeline,并且在那里我使用了与this example非常相似的受控滚动功能。现在,您可以看到仅显示了当前日期,但用户可以将画布滚动到上一个和下一个日期。这意味着画布的宽度是daterange的3倍。 我只需要将当前日期仅显示在画布中即可。
谢谢。
解决方法
我也在文档和互联网上挖掘了很多东西来解决这个问题。
终于我明白了。我正在与处于相同情况的人分享我的解决方案。
创建 defaultTimeRange 并设置为 min 和 max 缩放道具以禁用缩放。
然后为 onTimeChange 编写一个处理函数,并使用第三个回调函数来禁用滚动。
// Set the visible start and date somewhere in the beginning like this using useEffect
setVisibleTimeStart(currentDate.startOf("day").valueOf());
setVisibleTimeEnd(currentDate.endOf("day").valueOf());
...
const defaultTimeRange = visibleTimeEnd - visibleTimeStart;
<Timeline
...
minZoom={defaultTimeRange} <--- To disable Zoom
maxZoom={defaultTimeRange} <--- To disable Zoom
onTimeChange={(_start,_end,updateScrollCanvas) => {
updateScrollCanvas( <--- To disable Scroll
moment(visibleTimeStart).valueOf(),moment(visibleTimeEnd).valueOf()
);
}}
>
然后你必须像这样覆盖一个css类
.react-calendar-timeline .rct-scroll{
overflow-x: hidden !important;
}