【发布时间】:2020-04-15 17:01:28
【问题描述】:
我有一个使用 Material UI 创建的 React 组件,子组件 (Paper) 是根据数组的项目数动态生成的。
我必须更改悬停的纸张的高度属性,以将其与其他纸张区分开来。
在实际应用中,我不知道数组的项数,所以我必须对mouseover和mouseout只使用一个事件处理程序,但是我找不到应用效果的方法仅适用于悬停的项目,它会应用于所有项目。我该如何解决这个问题?
这是我的代码(我正在使用 React Hooks)
import React, { useState } from 'react'
import Paper from '@material-ui/core/Paper';
import Grid from '@material-ui/core/Grid';
import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles(theme => ({
container : {
backgroundColor: '#f5f5f5',
padding: theme.spacing(2),
},
paper: {
padding: theme.spacing(2),
},
}));
const List = () => {
const classes = useStyles();
const [elevation, setElevation] = useState(1);
const items = ['a','b'];
const paperHandleMouseOver = (evt) => {
setElevation(4);
}
const paperHandleMouseOut = (evt) => {
setElevation(1);
}
return(
<div className={classes.container}>
<Grid container spacing={3}>
{
items.map(item =>
<Grid item xs={12}>
<Paper elevation={elevation} onMouseOver={paperHandleMouseOver} onMouseOut={paperHandleMouseOut} className={classes.paper}>Test{item}</Paper>
</Grid>
)
}
</Grid>
</div>
)
}
export default List
提前致谢
【问题讨论】:
标签: javascript reactjs material-ui react-hooks