zoukankan      html  css  js  c++  java
  • react 灯箱组件 react-image-lightbox 的使用

    记得要安装配套的 react-modal 组件才行,就是这个demo里面的package.json文件的 react-modal 也记得安装!

    demo 请狠狠的戳这里 ¥ http://download.lllomh.com/cliect/#/product/J417060554145183

    demo 请狠狠的戳这里 c https://download.csdn.net/download/lllomh/12092889

    实际中使用

    import React, {Component} from "react"
    import Lightbox from 'react-image-lightbox';
    import 'react-image-lightbox/style.css'; // This only needs to be imported once in your app
    import './index.scss';
    import ShoppingDetails from "../shoppingDetails";
    import store from "../../redux/store";
    import {connect} from "react-redux";
    
    const mapStateToProps = state => {
        // console.log(state, 123)
        return {
            count: state.counter.count,
            hello: state.counter.hello,
            isOpen: state.counter.isOpen,
        }
    }
    
    const mapDispatchToProps = dispatch => {
        return {
            getSshow: (lo) => { //定义 方法操作
                dispatch({type: 'getSshow', value:lo})
    
            }
        }
    }
    
    
    class Lightboxs extends Component {
        constructor(props) {
            super(props);
            this.state = {
                imgArr:[],
                photoIndex:[]
            }
    
        }
    
        getImg = (val)=>{
            let arr = [];
            for(let i in val){
                arr.push(val[i].original)
            }
            this.setState((prevState, props) => ({
                imgArr: arr
            }));
        }
    
        getBanner=(q)=>{// 子组件的点击事件
            this.props.changeData(q) // 这个changeData()就是激活父组件的方法,可以传值
        };
    
        componentDidMount(){
            this.getImg(this.props.imgs)
        }
    
    
        render() {
            const {photoIndex} = this.props;
            console.log(this.props)
    
            return (
                <div>
                    <div className={`lightboxs`}>
                        {this.props.isOpen && (
                            <Lightbox
                                mainSrc={this.state.imgArr[photoIndex]}
                                nextSrc={this.state.imgArr[(photoIndex + 1) % this.state.imgArr.length]}
                                prevSrc={this.state.imgArr[(photoIndex + this.state.imgArr.length - 1) % this.state.imgArr.length]}
                                onCloseRequest={() =>this.props.getSshow(false)}
                                onMovePrevRequest={() =>
                                    this.getBanner(
                                         (photoIndex + this.state.imgArr.length - 1) % this.state.imgArr.length
                                    )
                                }
                                onMoveNextRequest={() =>
                                    this.getBanner(
                                        (photoIndex + 1) % this.state.imgArr.length,
                                    )
                                }
                            />
                        )}
                    </div>
                </div>
            );
        }
    }
    export default connect(
        mapStateToProps,      //读取redux 的值 用到redux 的组件 用connect 链接才会更新
        mapDispatchToProps
    )(Lightboxs)
    
    
    

    效果:

    最后 点开之后的初始大小在这里改:

  • 相关阅读:
    迭代器(Iterator)的使用
    xml转array
    linux 常用命令
    yii2 httpClient的用法
    将普通用户添加到sudo
    yii2 注册一个新事件(trigger Event)
    解决IDEA输入法输入中文候选框不显示问题(亲测谷歌拼音完美解决问题)
    5个用/不用GraphQL的理由
    Linux 用户必须知道的 14 个常用 Linux 终端快捷键
    java执行系统命令, 返回执行结果
  • 原文地址:https://www.cnblogs.com/lllomh/p/14991897.html
Copyright © 2011-2022 走看看