我的问题主要围绕文档w.r.t中的this statement。该反应成分:如何在ag-grid-react cellEditor组件中防止“Enter”键按下事件传播?
cellEditor的PARAMS
的onkeydown回调告诉电网按下一个键 - 有用通过 控制键事件(标签,箭头等)回格 - 无论你做不是 需要调用这个,因为网格已经在监听它们传播的事件 。只有在您阻止事件 传播时才需要。
我明白,被传递到组件的反应版本道具存在cellEditor的PARAMS,但我似乎无法找到,因为在文档指定如何连接到的onkeydown。在我的cellEditor的构造函数中,onKeyDown函数存在,并与我的列定义(如果存在)内的cellEditorParams
中指定的onKeyDown
匹配。
constructor(props) {
super(props);
// console.log(typeof props.onKeyDown == 'function') => 'true'
}
但是,如果它只是在组件
onKeyDown(event) {
console.log('not reached');
}
如果我把onKeyDown={this.props.onKeyDown}
在我输入一个顶级包装div中它得到调用存在,但它仍然无法赶上它从来没有达到“Enter”键。
我试着听细胞包含我的自定义单元格编辑
this.props.eGridCell.addEventListener('keyup', (event) => {
console.log(event.keyCode === 13)
})
哪个并捕获进入按但它似乎被按下时,输入要卸载之前,我可以捕捉领域内最终进入压机?我见过这种行为不起作用,所以我很困惑。
我目前有一个简单的单元格编辑器MyCellEditor我试图使焦点和选择下一个单元格时除了只是选项卡按下输入。我已经在this.props.api.rowRenderer
提取rowIndex
和column
性能我从rowRenderer需要,我再使用的能力等:
this.props.api.rowRenderer.moveFocusToNextCell(rowIndex, column, false, false, true);
我的问题是在哪里防止事件传播默认情况下从“回车”按。
下面是我的单元格编辑器和用法。
import React from 'react';
import _ from 'lodash';
class MyCellEditor extends React.Component {
constructor(props) {
super(props);
this.state = {
value: props.value,
};
}
getValue() {
return this.state.value;
}
isPopup() {
return false;
}
isCancelBeforeStart() {
return false;
}
afterGuiAttached() {
const eInput = this.input;
eInput.focus();
eInput.select();
}
onKeyDown(event) {
// Never invoked!
}
onChangeListener = (e) => {
this.setState({ value: e.target.value });
}
render() {
return (
<input
ref={(c) => { this.input = c; }}
className="ag-cell-edit-input"
type="text"
value={this.state.value}
onChange={this.onChangeListener} />
);
}
}
export default MyCellEditor;
列定义:
columnDefs = [{
headerName: 'CustomColumn',
field: 'customField',
editable: true,
cellClass: 'grid-align ag-grid-shop-order-text',
sortable: false,
cellEditorFramework: MyCellEditor,
// Do I need cellEditorParams?
cellEditorParams: {
// onKeyDown: (event) => console.log('does not output')
}
},
...
}
阵营:
<AgGridReact
columnDefs={columnDefs}
rowData={this.props.rows}
enableColResize="false"
rowSelection="single"
enableSorting="false"
singleClickEdit="true"
suppressMovableColumns="true"
rowHeight="30"
// onKeyDown also does nothing here
onGridReady={this.onGridReady}
onGridResize={() => console.log('grid resized')}
onColumnResize={() => console.log('column resized')} />
测试在6.0.1和7.0.0,适用于6.0.1和7.0.0,但导航感到7.0.0打破。我认为这是无关的。我坚持使用6.0.1。 – buddyp450