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>
    )
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值