带滚动条的图文列表局部刷新

6 篇文章 0 订阅

场景

我的页面左边是下拉树展示指标结构,右侧根据左边勾选的指标项展示对应的指标echarts图表,且页面整体有定时刷新。

问题

指标勾选过多时定时刷新会重新更新全部的echarts图表数据,非常影响性能,所以考虑给父元素定一个最大高度,通过滚动条滚动展示更多的图表,当图表暴露在父元素视图内定时刷新才会更新数据,隐藏的不更新

方案

  1. 监听滚动条scroll事件
  2. IntersectionObserver

通过监听scroll计算的方式计算量太大了,所以我这里选择的是Intersection Observer API
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Intersection_Observer_API

代码

useEffect(() => {
	const timer = setInterval(() => {
		if (targetRef.current) {
			const intersectionObserver = new IntersectionObserver((entries) => {
				if (entries[0].intersectionRatio <= 0) return;
				// 更新数据
				updateData();
			}, { root: moduleBoxRef, rootMargin: '0px 0px 100px 0px' })
		}
	}, 1000)
	return () => {
		clearInterval(timer);
	}
}, [targetRef, moduleBoxRef,id])
    

我这里用的react,目前来说时满足我的需求的,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PySide2是一个Python绑定Qt的库,它提供了一组Python模块,可以让你使用Qt的GUI功能。在PySide2中,你可以使用QScrollArea类来创建滚动条的窗口。QScrollArea是一个容器小部件,它可以包含一个单独的小部件,并提供了一个滚动条,以便用户可以滚动内容。你可以将你的小部件放在QScrollArea中,然后设置滚动条的大小和位置,以便用户可以滚动内容。 如果你想在PySide2中创建一个滚动条的窗口,你可以按照以下步骤进行操作: 1. 导入PySide2.QtWidgets模块。 2. 创建一个QScrollArea对象。 3. 创建一个QWidget对象,并将其设置为QScrollArea的小部件。 4. 将你的内容添加到QWidget对象中。 5. 设置QScrollArea的滚动条大小和位置。 下面是一个简单的示例代码,它演示了如何在PySide2中创建一个滚动条的窗口: ``` from PySide2.QtWidgets import QApplication, QMainWindow, QScrollArea, QWidget, QVBoxLayout, QLabel app = QApplication([]) window = QMainWindow() scroll_area = QScrollArea() widget = QWidget() layout = QVBoxLayout(widget) for i in range(100): label = QLabel(f"Label {i}") layout.addWidget(label) scroll_area.setWidget(widget) window.setCentralWidget(scroll_area) window.show() app.exec_() ``` 这个示例代码创建了一个有100个标签的窗口,并将它们放在一个垂直布局中。然后,它将QWidget对象设置为QScrollArea的小部件,并将QScrollArea设置为窗口的中央部件。最后,它显示了窗口并启动了应用程序的事件循环。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

濮家大少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值