【发布时间】:2020-09-07 21:32:15
【问题描述】:
有没有办法让多个相邻的单元格在一个单元格悬停时改变颜色?有没有办法使这种动态变化(例如,也会改变颜色的相邻单元格的数量可以变化)?
代码如下:
我在 React 中有一个表格,代码如下:
<TableBody>
<TableRow>{tableRowGen()}</TableRow>
</TableBody>
而tableRowGen函数的代码如下:
const tableRowGen = () => {
let cells = [];
for (var i = 0; i < columnNumber; i++) {
cells.push(
<TableCell
className={classes.td}
onMouseEnter={() => {
console.log("hi!");
}}
align="center"
>
{i}
</TableCell>
);
}
console.log(cells);
return cells;
};
目前,我有一个表格单元格 (td) 的类,它将悬停颜色更改为红色:
td: {
...
"&:hover": {
background: "#f00",
},
},
示例如下:
当前代码是这样的:
但是当只悬停在 3 上时,是否可以使 4 和 5 变为红色? (如下图)
编辑:
新增tableRowGen功能码:
const tableRowGen = () => {
let cells = [];
for (var i = 0; i < columnNumber; i++) {
cells.push(
<TableCell
// className={classes.td}
align="center"
onMouseEnter={() => onMouseEnter(i)}
onMouseLeave={onMouseLeave}
className={Math.abs(hoveredCell - i) <= 14 ? classes.td : ""}
>
{i}
</TableCell>
);
}
return cells;
};
根据建议的其他代码:
const [hoveredCell, setHoveredCell] = React.useState(null);
const onMouseEnter = React.useCallback((index) => {
setHoveredCell(index);
}, []);
const onMouseLeave = React.useCallback(() => {
setHoveredCell(null);
}, []);
【问题讨论】:
标签: javascript css reactjs material-ui