React 拖动图片

简介: React 拖动图片
import React, { useState } from 'react'
import '../css/main.css'
import DraggAble from 'react-draggable'
export default function Main() {
    const imglist = [
        "https://img1.baidu.com/it/u=1684598772,1969123139&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500",
        "https://img1.baidu.com/it/u=3457625930,3138307770&fm=253&fmt=auto&app=138&f=JPEG?w=752&h=500",
        "https://img0.baidu.com/it/u=726620871,4203188840&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800",
        "https://img2.autotimes.com.cn/news/2021/10/1011_171448907707.jpg",
        "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F5e5cf9d0-e396-4620-88a0-d44a1b9298f4%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1684896739&t=8c4cabbc7503378703d28497e8129991",
    ]
    const [ximg, setXimg] = useState('')
    const [xinp, setXinp] = useState('')
    const [conlist, setConlist] = useState([])
    const [stcc, setStcc] = useState(2)
    const [iid, setIid] = useState(-1)
    //选择照片
    const xuan = (con, ind) => {
        setXimg(con)
        setIid(ind)
    }
    //输入框
    const xuaninp = (con) => {
        // console.log('con', con)
        setXinp(con)
        // if (ximg != '') {
        //     setStcc(1)
        // }
    }
    //提交
    const addlist = (e) => {
        // console.log('ximg,xinp', ximg, xinp)
        console.log('e', e)
        let con = conlist
        if (con.length >= 4) {
            alert("数量超出")
        } else {
            con.push({ img: ximg, con: xinp, id: new Date().getTime(),xm:Math.random()*(355-100),ym:Math.random()*(350-120) })
            setConlist(con)
            setStcc(2)
            setIid(-1)
        }
        setXimg('')
        setXinp('')
    }
    //删除
    const delcon = (did) => {
        console.log('did', did)
        let list = [...conlist]
        let ind = list.findIndex(item => item.id == did)
        console.log('ind', ind)
        list.splice(ind, 1)
        setConlist(list)
    }
    const [sid, setSid] = useState(false)
    const [kid, setKid] = useState(0)
    //回填
    const showconed = (con) => {
        console.log('con', con, conlist)
        setKid(con.id)
        let ind = imglist.findIndex(item => item == con.img)
        console.log('indssss', ind)
        setIid(ind)
        setSid(!sid)
        setXimg(con.img)
        setXinp(con.con)
    }
    //修改
    const upcon = () => {
        let list = [...conlist]
        setIid(-1)
        let ind = list.findIndex(item => item.id == kid)
        console.log('key', list, ind)
        list[ind].con = xinp
        list[ind].img = ximg
        setConlist(list)
        setXimg('')
        setXinp('')
        setSid(!sid)
    }
    const dragcon = () => {
        console.log("111");
    }
    console.log('conslist', conlist)
    const dragstart = (e) => {
        console.log('e', e)
    }
    const draged = () => {
        console.log("结束");
    }
    return (
        <div>
            <div className='matop'>
                许愿墙
            </div>
            <div className='macon'>
                <input value={xinp} onChange={(e) => xuaninp(e.target.value)} />
                <div className='mimg'>
                    {imglist.map((item, index) => {
                        return (
                            <img key={index} src={item} style={{ border: iid == index ? "2px solid red" : "" }} onClick={() => xuan(item, index)} />
                        )
                    })}
                </div>
                {xinp === '' && ximg === '' ? (<div className='ss' disabled={!stcc} >
                    再想想
                </div>) : (
                    !sid ? (<div className='xy' onClick={(e)=>addlist(e)}>
                        许愿
                    </div>) : (<div className='up' onClick={upcon}>
                        修改
                    </div>)
                )}
            </div>
            <div className='malist'>
                {conlist.map(item => {
                    return (
                        <DraggAble key={item.id} defaultPosition={{x:Math.random()*100,y:Math.random()*100}}>
                            <div className='maitem'  >
                                <span className='con'>{item.con}</span>
                                <img src={item.img} onDoubleClick={() => showconed(item)} />
                                <span className='del' onClick={() => delcon(item.id)}>×</span>
                            </div>
                        </DraggAble>
                    )
                })}
            </div>
        </div>
    )
}
相关文章
|
27天前
|
前端开发 API UED
React 懒加载图片 Lazy Image
懒加载是一种优化技术,通过延迟加载不在视口内的图片,减少初始页面加载时间,提升用户体验。本文从基础概念入手,逐步探讨 React 中实现图片懒加载的常见问题、易错点及解决方案,并通过代码案例详细解释。
34 3
|
7月前
|
前端开发
React 仿淘宝图片放大镜功能
React 仿淘宝图片放大镜功能
136 0
|
6月前
|
前端开发
react怎么做图片报错处理
react怎么做图片报错处理
77 1
|
7月前
|
前端开发
构建一个简单的React图片画廊应用
构建一个简单的React图片画廊应用
151 0
|
7月前
|
前端开发 JavaScript
react中img引入本地图片的方式
react中img引入本地图片的方式
283 0
|
前端开发 JavaScript
react-qr-code的第三方库来将URL转换成二维码图片
在React中,你可以使用一个叫做react-qr-code的第三方库来将URL转换成二维码图片并保存。首先,你需要安装这个库: ``` npm install react-qr-code ``` 然后,在你的组件中引入react-qr-code: ``` import QRCode from 'react-qr-code'; ``` 接着,在render方法中使用QRCode组件,将URL作为一个属性传递进去: ``` render() { const url = 'https://www.example.com'; return ( <div> <Q
842 0
|
7月前
|
前端开发
react 实现图片懒加载
react 实现图片懒加载
156 0
|
7月前
|
前端开发
20行代码,封装一个 React 图片懒加载组件
20行代码,封装一个 React 图片懒加载组件
|
前端开发
React基础语法03-引入本地图片和服务器图片的方法
React基础语法03-引入本地图片和服务器图片的方法
124 0
|
前端开发
React/Umi中实现移动端滑动图片验证功能
React/Umi中实现移动端滑动图片验证功能
247 0