React---在React项目中使用react-virtualized来对长列表性能优化

1.概述

  • 场景:展示大型列表和表格数据(比如:城市列表、通讯录、微博等), 会导致页面卡顿、滚动不流畅等性能问题
  • 产生性能问题的原因 :大量DOM节点重绘重排
  • 其他原因:老旧设备
  • 其他问题 :移动设备耗电加快、影响移动设备电池寿命
  • 优化方案: 1.懶渲染(懒加载)2. 可视区域渲染
     

2.懒加载

  • 常见的长列表优化方案,常见于移动端
  • 原理:每次只渲染一部分(比如10条数据), 等渲染的数据即将滚动完时,再渲染下面部分
  • 优点:每次渲染一部分数据,速度快
  • 缺点:数据量大时,页面中依然存在大量DOM节点,占用内存过多、降低浏览器渲染性能,导致页面卡顿
  • 使用场景:数据量不大的情况(比如1000条,具体还要看每条数据的复杂程度)

3.可视化区域渲染(react-virtualized)

原理:只渲染页面可视区域的列表项,非可视区域的数据“完全不渲染”, 在滚动列表时动态更新列表项
使用场景: 一次性展示大量数据的情况(比如:大表格、微博、聊天应用等)

4.react-virtualized

(1)概述

①在项目中的应用:实现列表页面的渲染。
②react-virtualized 是React组件,用来高效渲染大型列表和表格数据。
③GitHub地址 : https://github.com/bvaughn/react-virtualized

(2)基本使用

①安装: 

npm install react-virtualized --save

②在项目入口文件index.js中导入样式文件(只导入一次即可)。
③打开文档,点击List组件,进入List的文档中。react-virtualized
④翻到文档最底部,将示例代码拷贝到项目中。
⑤分析示例代码。

(3)让List组件沾满屏幕

①打开AutoSizer高阶组件的文档。react-virtualized/AutoSizer.md at master · bvaughn/react-virtualized · GitHub
②导入AutoSizer组件。
③通过render-props模式,获取到AutoSizer组件暴露的width和height属性。
④设置List组件的width和height属性。
⑤设置页面根元素高度100% , 让List组件占满整个页面。
⑥调整样式,让页面不要出现全局滚动条,避免顶部导航栏滚动。

 

### 安装 Samba 的准备工作 为了在 Ubuntu 22.04 上成功安装并配置 Samba,确保系统是最新的非常重要。这可以通过运行以下命令来实现: ```bash sudo apt update && sudo apt upgrade -y ``` ### 步骤说明 #### 更新软件包列表和升级现有软件包[^1] 更新本地的 APT 软件包索引,并将已安装的软件包升级到最新版本。 #### 安装 Samba 及其工具集 通过官方仓库安装最新的稳定版 Samba 和一些常用的管理工具: ```bash sudo apt install samba smbclient cifs-utils -y ``` 此命令会自动处理依赖关系并将必要的文件复制到位。 #### 配置防火墙允许 SMB 流量 如果启用了 UFW(Uncomplicated Firewall),则需开放特定端口以便客户端能够访问共享资源: ```bash sudo ufw allow 'Samba' ``` 这条规则将会放行默认用于 Windows 文件共享服务通信所需的 TCP/UDP 端口号。 #### 创建一个新的共享目录 决定要分享哪个文件夹给网络中的其他计算机;这里以 `/srv/samba/shared` 为例展示如何设置权限以及创建该路径下的初始结构: ```bash sudo mkdir -p /srv/samba/shared sudo chmod 0775 /srv/samba/shared/ sudo chown nobody:nogroup /srv/samba/shared/ ``` 上述操作定义了一个任何人都可以读写的公共空间,但实际应用中可根据需求调整所有权与访问控制属性。 #### 编辑主配置文件 `smb.conf` 使用文本编辑器打开位于 `/etc/samba/smb.conf` 的全局设定文档,在最底部追加如下片段来自定义新建立好的共享区段: ```ini [shared] path = /srv/samba/shared browsable = yes read only = no guest ok = yes create mask = 0775 directory mask = 0775 force user = nobody ``` 这段 INI-style 格式的条目指定了共享名、位置以及其他重要的行为选项,使得外部设备能顺利连接至指定的目标存储区域。 #### 启动并启用 Samba 服务 最后一步是激活守护进程使其立即生效并且随操作系统启动而自启动: ```bash sudo systemctl restart smbd.service sudo systemctl enable smbd.service ``` 现在应该可以从局域网内的任意一台机器上浏览 Linux 主机所提供的公开资料库了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cirrod

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

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

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

打赏作者

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

抵扣说明:

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

余额充值