ag-grid学习笔记:单元格渲染流程(一)

ag-grid学习笔记:单元格渲染流程(一)

引言

ag-Grid 是一个用于在企业级应用中构建功能强大的数据网格的 JavaScript 库。其中一个关键优势在于其提供了灵活和可定制的单元格渲染流程。

在本文中,我们将深入探讨 ag-Grid 中的单元格渲染流程,探讨 valueGetter​​、valueFormatter​​ 和 cellRenderer​​ 的作用,以及它们在控制单元格外观和行为方面的重要性。

​​

三者:valueGetter、valueFormatter 和 cellRenderer的区别

1. valueGetter​:

作用

valueGetter​ 可以获取到当前行所有的原始数据并进行计算。

场景

当需要显示在数据源中不存在的数据时可以使用valueGetter​。

比如说数据源中存在单价和数据,需要计算总价时;这里的总价在数据源中是不存在的。

2. valueFormatter​:

作用

valueFormatter​可以用于将原始数据转换为适合显示的格式

场景

它可用于根据特定要求格式化日期、数字或其他类型的数据。

例如:数据源中返回的金额数字,在前面显示金额符号¥、$等,将数字按照3位数分割显示,银行卡号三位数空格一位等等格式化需求。

3. cellRenderer​:

作用

cellRenderer​ 用于处理单元格的可视渲染。该函数接受经过格式化的数据并创建实际的 HTML 或自定义组件,用于在单元格中呈现。

场景

例如需要添加按钮、链接或其他交互元素时。

valueGettervalueFormattercellRenderer​三个函数能同时使用吗?

当同时使用 valueFormatter​ 和 cellRenderer​ 时,数据流程如下:

  1. valueGetter 可以获取到原始数据。
  2. valueFormatter 函数的参数中可以拿到value属性,如果同时存在valueGetter函数,则value属性获取到的值就是valueGetter返回的值
  3. 格式化后的数据传递给 cellRenderer,后者创建单元格的可视表示。如果同时存在valueGetter函数,则value属性获取到的值就是valueGetter返回的值,如果同时存在valueFormatter函数,则value属性获取到的值就是valueFormatter返回的值

为什么ag-grid要做的这么复杂,需要用到三个函数来控制单元格的渲染?

为什么搞得这么复杂呢,cellRender​一把梭不就行了嘛?还真不行。

主要原因在于需要区分用户看到的数据和实际数据可能不同。由于 ag-Grid 具有丰富的功能,如果不区分原始数据和展示数据,很多功能将无法实现。例如,数据源中存在单价和数量,用户需要看到的单价可能带有货币符号¥,而在计算时需要使用单价的数字类型数据。

valueGetter​​通常用于计算,而 valueFormatter 和 cellRenderer 通常用于更美观地展示数据。

进行剪切板操作和导出操作时:复制的数据是什么?

当我们需要进行复制或剪切,亦或者是需要导出表格数据时,获取到的数据,默认情况下是拿到的源数据或者经过valueGetter​处理之后的数据。

如果需要让导出的数据和表格上显示的数据保持一致的话,可以设置useValueFormatterForExport​为true​。

结语

通过深入理解这三个关键函数的作用和相互关系,我们能够更好地利用 ag-Grid 的强大功能,创建出更灵活、更符合需求的表格。

相关推荐
小兵张健1 小时前
价值1000的 AI 工作流:Codex 通用前端协作模式
前端·aigc·ai编程
sunny_1 小时前
面试踩大坑!同一段 Node.js 代码,CJS 和 ESM 的执行顺序居然是反的?!99% 的人都答错了
前端·面试·node.js
拉不动的猪1 小时前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
ayqy贾杰3 小时前
Agent First Engineering
前端·vue.js·面试
IT_陈寒3 小时前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
iceiceiceice4 小时前
iOS PDF阅读器段评实现:如何从 PDFSelection 精准还原一个自然段
前端·人工智能·ios
大金乄4 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
葡萄城技术团队5 小时前
【性能优化篇】面对万行数据也不卡顿?揭秘协同服务器的“片段机制 (Fragments)”
前端
程序员阿峰5 小时前
2026前端必备:TensorFlow.js,浏览器里的AI引擎,不写Python也能玩转智能
前端
Jans5 小时前
Shipfe — Rust 写的前端静态部署工具:一条命令上线 + 零停机 + 可回滚 + 自动清理
前端