Reactjs 材质UI卡介质上的图像

Reactjs 材质UI卡介质上的图像,reactjs,material-ui,Reactjs,Material Ui,我在从CardMedia图像的道具获取图像时遇到了一些问题: <Card className={classes.card}> <CardMedia className={classes.img} image={this.props.recipe.thumbnail} /> <CardContent className={classes.content}> <Typography g

我在从CardMedia图像的道具获取图像时遇到了一些问题:

<Card className={classes.card}>
    <CardMedia 
        className={classes.img}
        image={this.props.recipe.thumbnail}
    />
    <CardContent className={classes.content}>
        <Typography gutterBottom variant="headline" component="h2">
            {this.props.recipe.title}
        </Typography>
        <Typography component="p">
            {this.props.recipe.ingredients}
        </Typography>
    </CardContent>
    <CardActions>
        <Button 
            href={this.props.recipe.href}
            Recipe
        </Button> 
    </CardActions>
</Card>

{this.props.recipe.title}
{这个.道具.配方.配料}

好的,我也有同样的问题。终于开始工作了

const styles = 
{

media: {
  height: 0,
  paddingTop: '56.25%', // 16:9,
  marginTop:'30'
}
  };


 <CardMedia
      className={classes.media}
      ***image={require('assets/img/bg2.jpg')}***
      title="Contemplative Reptile"
      **style={styles.media}**
    />
const styles=
{
媒体:{
高度:0,,
paddingTop:'56.25%',//16:9,
玛金托普:“30”
}
};
您还可以检查: -没有加载图像的选项。图像位置是我的本地


我已经阅读了文档,还注意到您必须指定显示图像的高度。虽然他们说您应该创建具有样式的组件,但我觉得更简单的方法是直接使用样式道具:

<CardMedia
  style={{height: 0, paddingTop: '56.25%'}}
  image={project.image}
  title="lorem ipsum"
/>

其他选项是先创建一个样式对象,然后按照文档所述的样式渲染组件:

const styles = {
  card: {
    maxWidth: 345,
  },
  media: {
    height: 0,
    paddingTop: '56.25%', // 16:9
  },
};

function SimpleMediaCard(props) {
  const { classes } = props;
  return (
    <div>
      <Card className={classes.card}>
        <CardMedia
          className={classes.media}
          image="/static/images/cards/contemplative-reptile.jpg"
          title="Contemplative Reptile"
        />
      </Card>
    </div>
  );
}

export default withStyles(styles)(SimpleMediaCard);
const styles={
卡片:{
最大宽度:345,
},
媒体:{
高度:0,,
paddingTop:'56.25%',//16:9
},
};
功能简单卡片(道具){
常量{classes}=props;
返回(
);
}
导出默认样式(样式)(SimpleDiaCard);

我也面临同样的问题。 一个好的解决方法是在CardMedia正文中使用'img'元素和'src'属性,而不是将其作为属性传递给CardMedia

<CardMedia>
 <img src={this.props.recipe.thumbnail} alt="recipe thumbnail"/>
</CardMedia>

这里我将图像的路径作为对象发送。这对我很有用。

要在CardMedia上设置回退映像,您可以尝试以下方法:

import FALLBACK_IMAGE from 'src/assets/images/fallback_image.png';

const onMediaFallback = event => event.target.src = FALLBACK_IMAGE;
<CardMedia
 component="img"
 className={classes.media}
 image="/static/images/cards/contemplative-reptile.jpg"
 title="Contemplative Reptile"
 onError={onMediaFallback}
/>
import FALLBACK_IMAGE from'src/assets/images/FALLBACK_IMAGE.png';
const onMediaFallback=event=>event.target.src=FALLBACK\u IMAGE;

在我的例子中,它在更改样式中除0以外的高度值后工作

未工作:

const styles = {
  card: {
    maxWidth: 345,
  },
  media: {
    height: 0,
    paddingTop: '56.25%', // 16:9
  },
};
工作:

const styles = {
  card: {
    maxWidth: 345,
  },
  media: {
    height: "300px" or "10em",
    paddingTop: '56.25%', // 16:9
  },
};

也许一些
配方
没有
缩略图
?是的,它有…我已经用相同的src在卡介质中制作了一个元素,它工作了。但它应该在没有img元素的情况下工作;它只需在CardMedia上引用即可工作element@Marcelo你找到解决办法了吗?这里也有同样的错误。如果你找到了,请发邮件。谢谢很好的解决方案…只是想补充一点,如果你附加了一个codesanbox,请确保它工作正常。当前连接的codesandbox到处崩溃;我已经设法让它工作…如果你能更新它将是伟大的链接沙盒不编译使它工作,我需要它添加.default',例如:image={require('assets/img/bg2.jpg')。default}我已经挣扎了几个小时的大小,它看起来不是我想要的方式,但非常接近,谢谢!!不知道为什么会被否决,这个答案解决了我的问题:`component=“img”是我缺少的东西,
const styles = {
  card: {
    maxWidth: 345,
  },
  media: {
    height: "300px" or "10em",
    paddingTop: '56.25%', // 16:9
  },
};