ag-Grid中的cellRenderer函数能返回一个React组件吗?
Can a cellRenderer function in ag-Grid return a React component?
我想在React中为我的大多数专栏使用cellRenderer。在我的colDefs中,我有一个额外的字段叫做unit。如果单元存在,我试图有一个热图,如颜色网格,这是在我的TableCell React组件处理。这个相同的react组件已经在其他数据网格(如ZippyUI)中工作过。cellRenderer函数可以返回一个React组件,这是一个虚拟DOM对象,或者它必须是一个真正的HTML DOM对象?用ag-Grid的cellRenderer组件方法做这样的事情会更好吗?
colDefs.map((x) => {
if (x.hasOwnProperty('unit')) {
x.cellRenderer = (params) => {
return <TableCell value={params.value} units={x.unit} min={min[x.field]} max={max[x.field]} colorScheme={colorScheme} />;
};
}
});
对于React,而不是使用cellRenderer
, cellEditor
等,您要使用cellRendererFramework
, cellEditorFramework
并传递一个具有setUp
和render
方法的类。
我弄清楚了需要的实现,并认为我应该把这个问题留给未来的用户。似乎需要组件方法,您可以使用cellRendererParms传递额外的参数。然后,在实际的渲染器(下面的ReactTableCellRenderer)中,你可以通过this.props.params.units来访问它们(或者用你在对象中传递的任何其他参数来替换units)。
colDefs.map((x) => {
if (x.hasOwnProperty('unit')) {
x.cellRenderer = reactCellRendererFactory(ReactTableCellRenderer);
x.cellRendererParams = {units: x.unit, min: min[x.field], max: max[x.field], colorScheme: colorScheme};
}
});
通过cellRendererParams传递的参数然后在React组件(在我的情况下,ReactTableCellRenderer)中通过this.props.params.units(或为单元替换适当的变量名称)
更新2021
补充@Tom的回答。您希望在列定义中使用cellRendererFramework
。下面是一个例子:
import * as React from "react";
import { FontIcon } from "@fluentui/react";
import { ColDef, ColGroupDef } from "ag-grid-community";
const isFavoriteCellRenderer = (params: any) => {
if (params.value) {
return (
<div>
<FontIcon
iconName="FavoriteStarFill"
title="Favorite"
aria-label="Favorite"
/>
</div>
);
}
return (
<div>
<FontIcon
iconName="FavoriteStar"
title="Not favorite"
aria-label="Not favorite"
/>
</div>
);
};
export const getIsFavoriteColumn = (): ColDef | ColGroupDef => ({
headerName: "isFavorite",
field: "isFavorite",
cellRendererFramework: isFavoriteCellRenderer,
});
注意params.value
是布尔值,这可以是任何类型,取决于您的行模型。
react grid的单元格渲染器文档
- 如何在react js中将值从一个组件发送到另一个组件
- 如何在react js中从一个页面导航到另一个页面
- React应用程序:道具在下一个事件后更新
- React Router一直给我一个警告:你不能更改<路由器路由>
- 使用react router/react router redux将特定的redux操作绑定到一个路由
- 可以在React Native中制作一个自哈希应用程序
- React渲染一个组件,然后单击另一个React组件
- 将react组件动态插入到另一个react组件中
- 如何使用ReactDOM渲染来渲染一个react组件
- ReactJS:在循环中返回一个React组件
- 如何在一个react类的实例中选择元素
- 用Sinon存根一个React组件方法
- 生产模式下的UglifyJSPlugin显示一个React开发模式警告
- 从另一个元素创建一个React元素在ReactJs中是有效的
- ag-Grid中的cellRenderer函数能返回一个React组件吗?
- 是否有一个React生命周期方法,只在组件第一次接收到props时才做一些事情?
- 部署我的第一个React应用
- 在另一个React组件中添加新的React模块
- 一个react组件可以有多个用于子内容的区域吗?
- 为什么一个react onClick事件附加一个问号到我的url