你好,我有一个带有条款和条件的模态,我想让用户同意的按钮在到达模态末尾时启用。我使用react类组件,模态是来自antd的组件。
render() {
return(
<Modal
title={
<h1>
<b>Terms and Conditions</b>
</h1>
}
open={this.state.visible}
width={800}
bodyStyle={{ height: '400px', overflowY: 'auto'}}
closable={false}
footer={
<Button
type="primary"
disabled={this.state.agreeTerm}
>
Accept
</Button>
}
>
<div>......</div>
</Modal>
正如你所看到的按钮在页脚的模态。我想使用参考,但模态的andd设计没有参考属性。在componentDidMount
上,我想添加这个this.modalRef.current.removeEventListener('scroll', this.handleScroll)
和handleScroll
函数是这样的
handleScroll = () => {
console.log('ref is :', this.modalRef.current)
const { scrollTop, scrollHeight, clientHeight } = this.modalRef.current
this.setState({
agreeTerm: scrollTop + clientHeight < scrollHeight
})
}
但这样不行。有人有办法吗?
2条答案
按热度按时间j7dteeu81#
在modal的底部放置一个div,使用IntersectionObserver跟踪用户是否到达底部,然后更新状态
布尔状态对于您的用例来说已经足够了,不需要在每次滚动时更新它
c0vxltue2#
因此,您可能会觉得这有点令人生畏。您可以查看这个钩子https://usehooks.com/useOnScreen/
看起来您使用了类组件,只是使用了componentDidMount而不是useEffect,并且componentWillUnmount来取消观察,与返回useEffect相同。
Ref是页脚按钮的属性。
好好享受吧!