【问题标题】:can't insert the image dynamically in react无法在反应中动态插入图像
【发布时间】:2020-08-02 03:57:40
【问题描述】:

我正在尝试通过传递道具来插入图像源,但我收到了错误消息

未捕获的错误:找不到模块“../4.0 - Assets/Images/video-list-1.jpg”

如何解决我要插入的组件的代码是

const VideoComp = (props) => {
  const {title, channel, image} = props.data;
  return(
    <div className="side-video-content">
      <div className="side-video-content-img">
        <img src={require(image)} alt=""/>
      </div>
      <div className="side-video-content-title">
        <h4>{title}</h4>
        <p>{channel}</p>
      </div>
  </div>
  );
}

export default VideoComp;

我是从这个组件传递过来的

class SideVideo extends Component {
  state = {
    sideVideo: {
      id: 1,
      title: "Become A Travel Pro In One Easy Lesson",
      channel: "Todd Welch",
      image: "../4.0 - Assets/Images/video-list-1.jpg",
    },
  };
  render() {
    return (
      <div className="side-video-container">
        <h5>Next Video</h5>
        <VideoComp data={this.state.sideVideo}/>
      </div>
    );
  }
}

export default SideVideo;

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    Ciao,试着用你需要的所有图像定义一个 js:

    // ../4.0 - Assets/Images/images.js
    const images = {
     myimage: require("./video-list-1.jpg"),
     ...
    }
    export default images;
    

    然后,在SideVideo

    import images from "../4.0 - Assets/Images"
    
     class SideVideo extends Component {
      state = {
        sideVideo: {
          id: 1,
          title: "Become A Travel Pro In One Easy Lesson",
          channel: "Todd Welch",
          image: images.myimage,
        },
      };
      render() {
        return (
          <div className="side-video-container">
            <h5>Next Video</h5>
            <VideoComp data={this.state.sideVideo}/>
          </div>
        );
      }
    }
    

    VideoComp:

    const VideoComp = (props) => {
      const {title, channel, image} = props.data;
      return(
        <div className="side-video-content">
          <div className="side-video-content-img">
            <img src={image} alt=""/>
          </div>
          <div className="side-video-content-title">
            <h4>{title}</h4>
            <p>{channel}</p>
          </div>
      </div>
      );
    }
    
    export default VideoComp;
    

    【讨论】:

    • 感谢 Giovanni 的快速响应我尝试了代码但得到 ./src/component/sidevideo.jsx Module not found: Can't resolve '../4.0 - Assets/Images'
    • 从'../4.0 - Assets/Images'导入图片; class SideVideo extends Component { state = { sideVideo: { id: 1, title: "在一个简单的课程中成为一名旅行专家", channel: "Todd Welch", image: images.myimage, }, };
    • 肯定是路径问题。文件夹component 与文件夹4.0 - Assets 处于同一级别?
    • 是的,谢谢,这不是路径问题,而是声明为对象,我在数组中声明了图像,因此必须使用索引来访问它,谢谢好友感谢您的帮助,请您参考任何来源我可以获得一些背景信息,为什么我必须这样做谢谢
    • Ciao,尝试阅读this讨论。基本上问题是 require 是如何工作的。 require 在运行前加载一次,因此无法传递动态字符串。
    猜你喜欢
    • 2020-12-19
    • 2022-11-22
    • 2021-05-14
    • 2020-12-09
    • 2021-12-10
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多