React Virtualized Table cellRenderer onClick方法问题

Duk*_*Duk 1 reactjs react-virtualized

我正在对数据表使用react-virtualized,但遇到了这个问题。我的目标是将onClick方法附加到单元格上。

renderColumns里面有功能<Table>

<AutoSizer disableHeight>
  {({ width }) => (
    <Table
       width={800}
       height={600}
       headerHeight={25}
       rowHeight={30}
       rowCount={list.length}
       rowGetter={({ index }) => list[index]}
    >
       {this._renderColumns(list, 100)}

    </Table>
  )}
</AutoSizer>
Run Code Online (Sandbox Code Playgroud)

renderColumns功能上,我称this._cellRenderer

_renderColumns(list, columnWidth) {
// create new list for display
return list && Object.keys(list[0])
  ? Object.keys(list[0]).map(column => (
      <Column
        key={column}
        width={columnWidth}
        label={column}
        dataKey={column}
        cellRenderer={this._cellRenderer}
      />
    ))
  : <div className="loading">Loading…</div>;
Run Code Online (Sandbox Code Playgroud)

}

然后在_cellRenderer,席力图召_onCellClickonClick事件。

_onCellClick() {
  alert('yey');
}

_cellRenderer({
  cellData,
  columnData,
  columnIndex,
  dataKey,
  isScrolling,
  rowData,
  rowIndex,
}) {
  return (
    <div>
      <a onClick={this._onCellClick}>{cellData}</a>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到TypeError:无法读取未定义错误的属性'_onCellClick'。因此,它告诉我this在此范围内未定义?我究竟做错了什么?

我在这里创建了一个示例。谢谢。

编辑Z6Vo1g5zR

joh*_*ley 5

您必须绑定_cellRenderer,因为您已经绑定了其他两种方法才能使用它。您只是将一个函数作为道具传递给表....如果未绑定,则不会有“ this”,因为类始终处于严格模式。