【发布时间】:2021-04-09 00:51:45
【问题描述】:
我正在使用以下库来锁定页面主体的滚动,并且只允许在我的模式打开时滚动。
https://www.npmjs.com/package/body-scroll-lock
我的模态AddItemModal 是一个门户,所以在index.html 文件中我有这个。
<body>
<div id="root"></div>
<div id="add-item-modal"></div>
</body>
NavigationIcons 组件(打开模式的地方)
const NavigationIcons = (props) => {
let targetElement = document.getElementById("add-item-modal");
useEffect(() => {
...
return () => clearAllBodyScrollLocks();
}, []);
const renderAddItemModal = () => {
if (props.addItem) {
disableBodyScroll(targetElement);
return <AddItemModal />;
}
};
return (
<div className="main-4" onClick={() => props.openAddItemModal()}>
{renderAddItemModal()}
</div>
);
}
AddItemModalHeader 组件(模态关闭的地方)
const AddItemModalHeader = (props) => {
let targetElement = document.getElementById("add-item-modal");
return (
<div className="modal-header">
add item
<div className="close" onClick={(e) => {
props.handleModalClose(e);
enableBodyScroll(targetElement);
}}>
close
</div>
</div>
)
}
在文档中写道targetElement 必须是我要显示的模式。但是由于应用程序是在root div 中呈现的,并且模态显示在add-item-modal 中,所以它不应该是root,而是将提供的函数应用于它,例如enableBodyScroll、disableBodyScroll、clearAllBodyScrollLocks。我确实尝试了root 和add-item-modal,在这两种情况下,当我从我的 iOS 设备进行测试时,滚动都无法在模式上工作。
那里提供的示例并没有让我清楚这一点。有人可以解释我在这里做错了什么吗?
更新
其他可能在 iOS 设备上遇到此问题的人请参阅以下来自 Github 线程的解释清楚的答案 https://github.com/ionic-team/ionic-v1/issues/155#issuecomment-411110252
【问题讨论】:
标签: javascript reactjs scroll