ang*_*gus 5 reactjs material-ui
我在样式主题中定义了三种backgroundColor。
avatar: {
backgroundColor: red[500],
},
orangeAvatar: {
margin: 10,
color: '#fff',
backgroundColor: deepOrange[500],
},
purpleAvatar: {
margin: 10,
color: '#fff',
backgroundColor: deepPurple[500],
},
Run Code Online (Sandbox Code Playgroud)
当头像加载时,我想随机选择其中之一。
<Card>
<CardHeader
avatar={
<Avatar id="av" aria-label="Recipe"
className={classes.avatar}>{this.props.userName.charAt(0).toLocaleUpperCase()}
</Avatar>}
title={this.props.userName} disableTypography={true}/>
<CardActionArea disabled={this.state.images.length == 1 ? true : false}>
<CardMedia
id={this.props.ownerId}
className={classes.media}
image={this.state.images[this.state.imageIndex]}
onClick={this.handleOnClick}
/>
</CardActionArea>
</Card>
Run Code Online (Sandbox Code Playgroud)
有什么建议如何做到这一点?
谢谢
有几种方法可以做你想做的事。我的建议:将 3 个类放入一个数组中,每次选择 0 到 2 之间的随机数,并指定该类名称:
<Avatar className={classes[Math.floor(Math.random() * 3)]}.../>
小智 5
我也有同样的需求,也许这个解决方案也能满足你的需求,有一个函数可以随机生成颜色,然后从在线样式中调用该函数。
const useStyles = makeStyles((theme: Theme) =>
createStyles({
large: {
fontSize: "2.5rem",
width: 100,
height: 100
}
})
);
function randomColor() {
let hex = Math.floor(Math.random() * 0xFFFFFF);
let color = "#" + hex.toString(16);
return color;
}
Run Code Online (Sandbox Code Playgroud)
...
return (
<Avatar
variant="square"
src={imageSrc}
alt={alt}
className={classes.large}
style={{
backgroundColor: randomColor()
}}
/>
)
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
8509 次 |
| 最近记录: |