我正在使用 react 进行 chrome 扩展。在我的应用程序中,我使用的是Rsuite Dropdown 组件。我正在使用包含大量项目的嵌套菜单,因此在某些菜单上,下拉菜单中的项目列表超出了屏幕。问题是我将鼠标悬停在菜单上,下拉菜单打开,它延伸到屏幕之外,窗口滚动到下拉菜单的底部,我的鼠标现在从菜单选择器上移开,因此下拉菜单关闭并且窗口向上滚动. 我的目标是在窗口不向下滚动到底部的情况下打开下拉菜单。 问题的GIF
我的代码:
我的 App.js 中只有一个组件,它只是我所有书签的下拉列表
<Dropdown title="Bookmarks">
{bookmarks.map((mark) => {
return (mark.children === undefined ? <BookmarkItem Bookmark={mark}/> : <BookmarkFolder Bookmarks={mark}/>)
})}
</Dropdown>
对于所有书签,我检查它是一个文件夹还是一个实际的书签,如果它是一个文件夹,我插入一个文件夹组件(它递归地做这件事)
const BookmarkFolder = ({Bookmarks}) => {
return (
<Dropdown.Menu title={Bookmarks.title}>
{Bookmarks.children.map((mark) => {
return (mark.children === undefined ? <BookmarkItem Bookmark={mark}/> : <BookmarkFolder Bookmarks={mark}/>)
})}
</Dropdown.Menu>
);
};
如果它是书签,我将书签标题显示为下拉项
/* Limit title length to 25 characters */
const limitLength = (title) => {
if (title.length > 25) {
return `${title.substring(0, 22)}...`;
}
else {
return title;
}
}
return (
<Dropdown.Item>
{limitLength(Bookmark.title)}
</Dropdown.Item>
);
当书签项呈现时,我一直在尝试以编程方式向上滚动页面:
useEffect(() => {
window.setTimeout(() => window.scrollTo(0,0), 500);
}, []);
但这行不通。
非常感谢您的帮助!