javascript - 如何将本 map 片链接到js中的字符串

标签 javascript html css reactjs

我正在为我的 React 应用构建图像模块,我在 internet 上找到了它它工作得很好,但我不知道如何链接本地镜像,不是来自谷歌(url)或 wiki(url),而是来 self 的本地 img 文件夹,谢谢帮助

import Lightbox from 'react-lightbox-component';
const App = () => (


<div>
    <Lightbox images={
      [
        {
          src: 'some image url',
          title: 'image title',
          description: 'image description'
        }
      ]
    }/>
  </div>
);

最佳答案

import ImageSrc from "../path/to/your/image";


<Lightbox images={
  [
    {
      src: {ImageSrc},
      title: 'image title',
      description: 'image description'
    }
  ]
}/>

您需要从当前文件夹正确导航

../ - 返回一个文件夹 / - 前进一个文件夹

构建一个引用图像位置的路径。

这是我的子页面:

import React, { Component } from 'react';
import{
  Link
} from 'react-router-dom';
import Lightbox from 'react-lightbox-component';

//import img
import img1 from'../../assets/img/vizualizacie/vizualizacie1.jpeg';
import img2 from'../../assets/img/vizualizacie/vizualizacie2.jpeg';
import img3 from'../../assets/img/vizualizacie/vizualizacie3.jpeg';
import img4 from'../../assets/img/vizualizacie/vizualizacie4.jpeg';



class Vizualizacie extends Component{




  render() {



    return (

    <div className="Vizualizacie" >

      <div className="sekcia1">

        <h1>Vizualizácie</h1>

      </div>

      <div className="sekcia2">

        <h2>Naša Tvorba</h2>
        <p>
          Neque porro quisquam est qui dolorem ipsum quia lorem ipsum dolor sit amet dolor sit amet, consectetur, adipisci velit
        </p>

      </div>

        <Lightbox className="sekcia3" images={ [
          {
            src: {img1},
            title: 'Ropy pahoehoe',
            description: 'By Tari Noelani Mattox. Licensed under Public Domain via Commons'
          },
          {
            src: 'https://upload.wikimedia.org/wikipedia/commons/7/73/Pyroclastic_flows_at_Mayon_Volcano.jpg',
            title: 'Pyroclastic flows at Mayon Volcano',
            description: 'By C.G. Newhall. Licensed under Public Domain via Commons'
          },
          {
            src: 'https://upload.wikimedia.org/wikipedia/commons/f/f3/Okataina.jpg',
            title: 'Okataina',
            description: 'By Richard Waitt. Licensed under Public Domain via Commons'
          },
          {
            src: 'https://upload.wikimedia.org/wikipedia/commons/f/f3/Okataina.jpg',
            title: 'Okataina',
            description: 'By Richard Waitt. Licensed under Public Domain via Commons'
          }
        ] }/>




    </div>






    );
  }
}

export default Vizualizacie;

这是我的 lightbox.jsx 组件:

import React from 'react';
import PropTypes from 'prop-types';
import Container from './Container';
import BodyPortal from './BodyPortal';
import './Lightbox.css'

import img1 from'./../../../assets/img/vizualizacie/vizualizacie1.jpeg';

export default class Lightbox extends React.Component {
  constructor(props) {
    super(props);
    this.toggleLightbox = this.toggleLightbox.bind(this);
    this.state = {
      showLightbox: false,
      selectedImage: 0
    };
  }

  toggleLightbox(idx) {
    this.setState({
      showLightbox: !this.state.showLightbox,
      selectedImage: idx
    });
  }

  render() {
    let props = this.props;
    let images = props.images.map((image, idx) => {
      return props.renderImageFunc.call(
        this,
        idx,
        image,
        this.toggleLightbox,
        props.thumbnailWidth,
        props.thumbnailHeight
      );
    });
    let container;
    if (this.state.showLightbox)
      container = (
        <BodyPortal>
          <Container
            {...this.props}
            toggleLightbox={this.toggleLightbox}
            selectedImage={this.state.selectedImage}
          />
        </BodyPortal>
      )

    return (
      <div className='lightbox-container'>
        {images}
        {container}
      </div>
    )
  }
}

Lightbox.defaultProps = {
  showImageModifiers: true,
  thumbnailWidth: '80px',
  thumbnailHeight: '80px',
  renderImageFunc: (idx, image, toggleLightbox, width, height) => {
    return (
      <img
        key={idx}
        src={ !!image.thumbnail ? image.thumbnail : image.src  }
        className='lightbox-img-thumbnail'
        style={{width: width, height: height}}
        alt={image.title}
        onClick={toggleLightbox.bind(null, idx)} />
    )
  }
}

Lightbox.propTypes = {
  images: PropTypes.arrayOf(PropTypes.shape({
    src: PropTypes.string.isRequired,
    title: PropTypes.string,
    description: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
    thumbnail: PropTypes.string
  })).isRequired,
  showImageModifiers: PropTypes.bool,
  thumbnailWidth: PropTypes.string,
  thumbnailHeight: PropTypes.string,
  renderImageFunc: PropTypes.func,
  renderDescriptionFunc: PropTypes.func
}

关于javascript - 如何将本 map 片链接到js中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52284394/

相关文章:

javascript - 如果 div B 为空则隐藏 div A

html - 为什么双格式标签会导致 IE 中出现换行符?

html - 单击以在没有 JS 的移动设备上打开和关闭 Bootstrap 汉堡菜单

html - “ block 样式”单选按钮适用于除 iPad 以外的所有设备

javascript - 在图表 js 中只想要线条而不是它下面的区域

javascript - 如何导入为对象的新副本?

php - 在 php 中上传图像之前如何动态重命名图像

html - 使用 css 调整 html 标签背景图像的大小以随屏幕缩放

css - 关于悬停闪烁问题的 Bootstrap 导航

javascript - 使用需要 header 并提供内容的 REST 请求下载文件