我正在尝试单击一个网格中的行,并在另一个网格中显示其数据。该列被命名为我要显示其数据的内容。但是当我单击时,我看到console.log中的数据,而不是另一个网格中的数据。为什么?这是我的代码
任何帮助都将不胜感激
const handleClick = (event) => {
const rowIndex = event.currentTarget.rowIndex;
const clickedContent = pimerror[rowIndex].content;
setClickedContent(clickedContent);
console.log(clickedContent);
};
<Grid item xs={12} lg={3.7}>
<AdvancedTableView
title="Test Files"
id_sort="datetime"
data={pimerror.map((error) => {
return {
...error,
datetime: moment(error.datetime, "YYYYMMDDHHmmss").format(
" DD/MM/YYYY, HH:mm:ss"
),
};
})}
filter_list={["content"]}
onRowClick={handleClick}
/>
</Grid>
<Grid item xs={12} lg={4}>
<AdvancedTableView
title="Clicked Content"
data={{ content: clickedContent }} // pass clickedContent to data prop
filter_list={[]}
/>
</Grid>
1条答案
按热度按时间p4rjhz4m1#
useState
钩子实际上是异步的。这就是为什么当你调用setClickedContent
时,结果会在一段时间后出现。在你的例子中,你可以用钩子
useState
来存储点击的索引。当被点击的索引发生变化时,clickedContent
可以用钩子useMemo
计算。你可以看看我创建的简单例子。单击第一个表后,将重新呈现第二个表。
工作示例如下:https://codesandbox.io/s/simple-usememo-y5tk58