【发布时间】:2020-10-31 05:33:18
【问题描述】:
您好,我在模拟自定义创建的对象 addEventListener 时遇到问题。 下面是我的反应渲染代码
<Fragment>
<div
className={`${Styles.resizable} resizable`}
ref={resizableRef}
style={{ width: width, height: height }}
>
<div className={`${Styles.resizable_resizers} resizers`}>
<div
className={`${Styles.resizable_resizers_resizer} ${Styles[resizeDirection]} resizer ${resizeDirection}`}
></div>
{children}
</div>
{maxCharacter !== null ? (
<div className={`${Styles.resizable__limit}`}>
{characterCount} / {maxCharacter}
</div>
) : null}
</div>
</Fragment>
在 React 钩子中使用 useLayoutEffect - 我正在操作 DOM
const resizers = resizableRef.current.querySelectorAll(".resizable .resizer");
for (let i = 0; i < resizers.length; i++) {
const currentResizer = resizers[i];
const resize = (e) => {
if (currentResizer.classList.contains("bottomright")) {
resizableRef.current["style"].width =
e.pageX - resizableRef.current.getBoundingClientRect().left + "px";
resizableRef.current["style"].height =
e.pageY - resizableRef.current.getBoundingClientRect().top + "px";
} else if (currentResizer.classList.contains("vertical")) {
resizableRef.current["style"].height =
e.pageY - resizableRef.current.getBoundingClientRect().top + "px";
} else if (currentResizer.classList.contains("horizontal")) {
resizableRef.current["style"].width =
e.pageX - resizableRef.current.getBoundingClientRect().left + "px";
}
};
const stopResize = () => {
window.removeEventListener("mousemove", resize);
};
currentResizer.addEventListener("mousedown", (e) => {
e.preventDefault();
window.addEventListener("mousemove", resize);
window.addEventListener("mouseup", stopResize);
});
}
}, []);
我正在为上面的代码编写单元测试用例,但似乎 currentResizer.addEventListener("mousedown", (e) => {....}); 没有被嘲笑,我'我无法进一步进行。 任何帮助将不胜感激。
【问题讨论】:
-
你在嘲笑它吗?也分享笑话代码
-
嗨,请找到链接,我尝试了多个场景来模拟它 -- codepen.io/ruchiprsd/pen/dyGKQgK
标签: jestjs react-hooks enzyme addeventlistener