我使用PanelBar,并使用名为ParentComponent的组件来呈现网格,就像我附加的https://stackblitz.com/edit/react-zqjhpp-ev3ujs?file=app%2Fmain.jsx,app%2FParentComponent.jsx项目一样
下面是App组件:
import ReactDOM from 'react-dom';
import ParentComponent from './ParentComponent';
import { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';
const App = () => {
return (
<PanelBar>
<PanelBarItem expanded={true}>
<ParentComponent />
</PanelBarItem>
</PanelBar>
);
}
ReactDOM.render(<App />, document.querySelector('my-app'));下面是ParentComponent组件:
import React from 'react';
import { Grid, GridColumn as Column } from '@progress/kendo-react-grid';
import products from './products.json';
const ParentComponent = () => {
return (
<Grid style={{ height: '400px' }} data={[...products]}>
<Column
field="ProductID"
title="ID"
width="100px"
cell={(props) => (
<td>
<div onClick={()=>{
console.log("test")
}}>Click</div>
</td>
)}
/>
<Column field="ProductName" title="Name" width="250px" />
<Column field="Category.CategoryName" title="CategoryName" />
<Column field="UnitPrice" title="Price" />
<Column field="UnitsInStock" title="In stock" />
<Column
field="Discontinued"
cell={(props) => (
<td>
<input
disabled
type="checkbox"
checked={props.dataItem[props.field]}
/>
</td>
)}
/>
</Grid>
);
};
export default ParentComponent;它可以正常工作,直到我单击ID列中的 click 单元格,我需要单击它两次才能触发控制台上的回调日志“测试”文本。
注意:如果我替换
<div onClick={() => {
console.log("test")
}}>Click</div>进入一个Link组件的react路由器-dom我也有同样的问题,我必须点击两次来触发它。请帮帮我!非常感谢你!
更新的:我把useCallback放在包装回调的地方
(props) => (<div onClick={() => console.log(“test”)}>Click<div/>那就行了,但我不知道为什么
发布于 2022-10-24 11:29:49
确保你的窗口是聚焦的,所以试着点击你的细胞附近,然后在它上,它可能真的工作。
如果没有,请尝试将onClick提供给列本身。
如果它不起作用,我只能建议PanelBarItem本身可能会使用第一次单击,为了测试它,只需使用简单的div删除PanelBarItem,然后尝试单击单元格。
希望能帮上忙!
https://stackoverflow.com/questions/74180156
复制相似问题