我正在用一些ReactJS组件构建一个Tabler Jmeter 板。起初我使用普通的HTML页面,使用Jinja 2模板,但我开始为一些组件实现ReactJS。
我不想使用太多的第三方工具,如react-tabler或bootstrap-tabler,因为它会创建很多我可能并不真正需要的额外包。我已经能够创建一个漂亮的Tabler Jmeter 板,使用ReactJS组件,而不需要这些包。
我现在遇到的唯一问题是显示一个Modal....现在这个可以工作了,但是CSS过渡并不真正。至少,一开始不是。我让他们这样工作:
// handle button click
const handleEditClick = (row) => {
setIsModalOpen(true);
modalRef.current.style.display = "block";
// delay to make sure block is set first
setTimeout(() => {
modalRef.current.classList.add("show");
}, 100);
};
问题是我不太喜欢这个感觉有点土
显示一个Modal可以很好地工作,只需首先添加style="display:block
属性,然后添加show
类。这样我就可以在没有太多额外JavaScript或其他东西的情况下工作。但是display:block
必须首先设置。看起来,如果没有设置,它们会同时设置,或者稍后设置display:block
,所以你不会看到转换。
我尝试添加以下事件列表modalRef.current.addEventListener("transitionend", handleTransitionEnd);
,但我想这只适用于实际过渡,而不是更改样式。
有没有比100 ms超时更简洁的方法?显然,我不能在默认情况下添加display:block
,因为这样我的应用程序就无法访问了,因为透明模式位于我的应用程序之上。
1条答案
按热度按时间agxfikkp1#
这就是我现在修复它的方法。我使用了两次useEffect,这是防止类“show”与
display:block
样式同时添加所必需的。要关闭Modal,我实际上可以使用
transitionend
事件侦听器。