开发者问题收集

错误:将图像传递给子组件时找不到模块“。”

2018-08-13
3679

我在这里总是出错:

在此处输入图片说明

我试图将图片网址从父组件传递给子组件。但我总是遇到这样的错误。 还有其他方法可以将图片网址数组传递给子组件吗?

父组件:

const { classes } = props;
    return( 
        <Grid
          container
          spacing={24}
          direction="row"
          justify="space-around"
          alignItems="flex-start"
        > 
            <Grid item xs={12} sm={12} md={10} lg={8} xl={6}> 
               <Slider imgPath={images} /> 
            </Grid>
        </Grid> 
    ); 

子组件:

import React, { Component } from 'react';
import Slider from 'react-animated-slider';
import horizontalCss from 'react-animated-slider/build/horizontal.css'; 

function slider(props) {
    const { classes } = props;
    var html=[];
    var imgPath=props.imgPath;

    for (var i = 0; i <imgPath.length; i++) { 
        var path = "'" + imgPath[i] + "'"; 
        var path1 = "<img src={require("+path+")} />"; 
        html.push(<img src={require(path)}/>);
    }

    return(
        <Slider autoplay={5000} classNames={horizontalCss}> 
            {html} 
        </Slider> 
    );
} 

export default slider;
1个回答

您不能在 require 中使用动态名称,它需要静态可解路径。因此,这里有一个您可以这样做的示例。只需根据您的情况调整代码即可。

const App = () => {
  const images = [
    { id: 1, path: require( "./images/img1.jpg" ) },
    { id: 2, path: require( "./images/img2.jpg" ) },
    { id: 3, path: require( "./images/img3.jpg" ) },
  ];

  return (
    <div>
      {
        images.map( image => (
          <Img key={image.id} image={image} />
        ) )
      }
    </div>
  );
};

const Img = ( { image } ) => (
  <div>
    <p>{image.id}</p>
    <img width="100" src={image.path} />
  </div>
);


作为此方法的替代方法,我最近学到了一种更简单的方法:

const App = () => {
  const images = [
    { id: 1, path: "./images/img1.jpg" },
    { id: 2, path: "./images/img2.jpg" },
    { id: 3, path: "./images/img3.jpg" },
  ];

  return (
    <div>
      {
        images.map( image => (
          <Img key={image.id} image={image} />
        ) )
      }
    </div>
  );
};

const Img = ( { image } ) => (
  <div>
    <p>{image.id}</p>
    <img width="100" src={require( "" + image.path )} />
  </div>
);

require( "" + image.path ) 在这里很管用。使用此方法,我们不必编写那么多 require ,而是可以在子组件中使用一个。

devserkan
2018-08-13