javascript - 在 mobx 商店反应中更新正文样式
问题描述
我有一个模态组件(React),它通过 mobx 商店中的 open、close 方法观察变化。
打开时,我需要设置document.body.style.overflow = 'hidden'
为保留模式滚动。最后,我从身体上清除了隐藏的样式。
@action open = () => {
document.body.style.overflow = 'hidden'
}
@action close = () => {
document.body.style.overflow = ''
}
有没有更好的方法来做到这一点autorun
?
我不知道在哪里调用自动运行,在 Store 类之外或者里面有一个方法。我没有运气。
autorun(
() => {
document.body.style.overflow = this.isMaximized ? 'hidden' : ''
},
{ name: 'bodyOverflowUpdate' }
)
供参考,this.isMaximized
是一个计算值
@computed
get isMaximized() {
return this.modalState.isOpen && !this.modalState.isMinimized
}
解决方案
使用 mobx 反应似乎可以解决我的用例
setBodyOverflow = reaction(
() => this.isMaximized,
isMaximized => {
document.body.style.overflow = isMaximized ? 'hidden' : ''
},
{ name: 'setBodyOverflow' },
)
推荐阅读
- racket - 如何在 Racket 中制作 HTML 表格边框
- vb.net - 如何计算已在 VB.NET 中的 datagridview 中检查的复选框
- microservices - jhipster 注册中心/控制中心向网关应用程序发送管理请求导致 401 未授权
- html - 为什么不使用填充作为显示?
- python - 我可以将 python 服务器与 kotlin 客户端连接起来吗?
- java - 我如何检测是否有人输入了错误的 otp
- r - 如果使用融化的 data.table,如何使用 ggplot2 向条形图添加标签?
- azure - 如何从 ADO 管道中检索功能键?
- python - 如何将牌传给其他玩家等等。说P1抽了4个梅花,我怎么传给P2
- python-3.x - np.argsort 和 pd.nsmallest 给出不同的结果