ag-Grid 单元格渲染 - 自定义道具

Luc*_*cas 12 javascript typescript reactjs ag-grid

在查看了ag-Grid 单元格渲染文档后,我没有看到通过cellRenderFramework参数向单元格渲染器添加自定义属性的方法。例如,我想将回调传递给我的自定义渲染器,该渲染器在单击按钮时被调用。

class AddCellRenderer extends React.Component<ICellRendererParams, {}> {

  /**
   * Callback handle to pass data to on a click.
   */
  public static callback = (data: MyData): void => { return; };

  public constructor(params: ICellRendererParams) {
    super(params);
  }

  public render() {
    let className = 'pt-button pt-intent-success pt-icon-add';
    let text = 'Click to add';
    if (this.props.data.saved) {
      className = 'pt-button pt-intent-danger pt-icon-remove';
      text = 'Click to remove';
    }
    return (
      <button type="button" onClick={this.onClick} className={className}>{text}</button>
    );
  }

  private onClick = (event: React.FormEvent<HTMLButtonElement>): void => {
    AddCellRenderer.callback(this.props.data);
    this.setState({ ...this.state }); // Make React update the component.
  }
}
Run Code Online (Sandbox Code Playgroud)

我有另一个组件像这样使用它

public render() {
  let saveCellRenderer = AddCellRenderer;
  saveCellRenderer.callback = this.onSelectData;
  const columnDefs: ColDef[] = [
    {
      headerName: 'Add to Available Data',
      cellRendererFramework: AddCellRenderer,
    },
    ...
  ];
  ...
  }
Run Code Online (Sandbox Code Playgroud)

除了丑陋的静态公共方法之外,必须有另一种方法将此回调作为道具传递,并且在多个组件使用渲染器时不起作用,我该如何使用 ag-Grid 执行此操作?

Ish*_*ina 20

我知道这已经晚了。但是你尝试过cellRendererParamscellRenderer
您可以使用它为自定义单元格组件设置自定义道具。例如:

columnDef = [
    .......
    {
        .......
        cellRenderer: CustomCellComponent,
        cellRendererParams: {
            prop1: "this is prop1"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

  • 相关文档[此处](https://www.ag-grid.com/javascript-grid-cell-rendering-components/#complementing-cell-renderer-params)和[此处](https://www.ag- grid.com/javascript-grid-cell-rendering-components/#react-props)。请注意,对于 headerComponentFramework 渲染器,您需要传递 [headerComponentParams](https://www.ag-grid.com/javascript-grid-header-rendering/#complementing-params)。 (2认同)
  • 添加“cellRendererParams”后,如何在“CustomCellComponent”中访问它们?请帮忙。 (2认同)
  • @StangSpree 它应该在 CustomCellComponent 的 props (props.prop1) 中可用。 (2认同)