React Virtualized Table cellRenderer onClick 方法问题
React Virtualized Table cellRenderer onClick method issue
我正在为数据使用 react-virtualized table,我遇到了这个问题。我的目标是将 onClick
方法附加到单元格。
我在<Table>
里面有renderColumns
函数
<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>
然后在 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>;
}
然后在 _cellRenderer
中,我尝试在 onClick
事件中调用 _onCellClick
。
_onCellClick() {
alert('yey');
}
_cellRenderer({
cellData,
columnData,
columnIndex,
dataKey,
isScrolling,
rowData,
rowIndex,
}) {
return (
<div>
<a onClick={this._onCellClick}>{cellData}</a>
</div>
);
}
当我这样做时,我得到 TypeError: Cannot read 属性 '_onCellClick' of undefined 错误。所以它告诉我 this
在此范围内未定义?我做错了什么?
我在这里创建了一个示例。谢谢。
您必须绑定 _cellRenderer,因为您绑定了其他两种方法才能以这种方式使用它。你只是将一个函数作为道具传递给 table... 如果它没有绑定就不会有 'this' 因为 类 总是处于严格模式。
我正在为数据使用 react-virtualized table,我遇到了这个问题。我的目标是将 onClick
方法附加到单元格。
我在<Table>
renderColumns
函数
<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>
然后在 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>;
}
然后在 _cellRenderer
中,我尝试在 onClick
事件中调用 _onCellClick
。
_onCellClick() {
alert('yey');
}
_cellRenderer({
cellData,
columnData,
columnIndex,
dataKey,
isScrolling,
rowData,
rowIndex,
}) {
return (
<div>
<a onClick={this._onCellClick}>{cellData}</a>
</div>
);
}
当我这样做时,我得到 TypeError: Cannot read 属性 '_onCellClick' of undefined 错误。所以它告诉我 this
在此范围内未定义?我做错了什么?
我在这里创建了一个示例。谢谢。
您必须绑定 _cellRenderer,因为您绑定了其他两种方法才能以这种方式使用它。你只是将一个函数作为道具传递给 table... 如果它没有绑定就不会有 'this' 因为 类 总是处于严格模式。