目标
在 div 从固定位置切换为无后,恢复窗口的 scoll 位置。
问题
尽管我将它正确保存到状态,但恢复滚动位置不起作用。
描述
我有一个通过 onClick 打开模式的页面。因此,我创建了一个“ToggleModalContext”,一方面将道具传递给模态,另一方面传递给背景 div。我想通过设置 css 属性来修改背景 divposition
以fixed
避免滚动背景而不是模式的内容。当模式关闭时,position: fixed
被删除,我想恢复窗口的滚动位置。这最后一步不起作用。也许其他人有想法?
ToggleModalContext(这是调用滚动恢复功能的上下文)
import React from "react";
export const ToggleModalContext = React.createContext();
export const ModalProvider = props => {
const [toggle, setToggle] = React.useState(false);
const [scrollPosition, setScrollPosition] = React.useState();
function handleToggle() {
if (toggle === false) {
setScrollPosition(window.pageYOffset); // When the Modal gets opened, the scrollposition is saved correctly
}
if (toggle === true) {
window.scrollTo(0, scrollPosition); // Restoring doesnt work.
}
setToggle(!toggle);
}
return (
<ToggleModalContext.Provider value={[toggle, handleToggle]}>
{props.children}
</ToggleModalContext.Provider>
);
};
也许有人有想法?也许我必须使用useEffect?但是怎么做?提前感谢您的时间:)