首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React调整div大小的Bug

React调整div大小的Bug
EN

Stack Overflow用户
提问于 2022-11-02 10:22:48
回答 1查看 32关注 0票数 0

我正在学习ReactJS,我开始了一个小项目来学习它。我尝试创建一个div,它可以通过拖动来调整大小。这是我的密码:

代码语言:javascript
复制
import { useRef, useState } from 'react';
import PostViewer from '../PostViewer/PostViewer';
import './ContainerResize.scss'
import * as htmlToImage from 'html-to-image';
import { toPng } from 'html-to-image';
import download from 'downloadjs'


function savePng() {
    htmlToImage.toPng(document.getElementById('Resizable'))
        .then(function (dataUrl) {
            download(dataUrl, 'tweet.png');
        });
}

const ContainerResize = (props) => {

    const [initialPos, setInitialPos] = useState(null);
    const [initialSize, setInitialSize] = useState(null);
    const resizable = useRef(null);

    const initial = (e) => {
        setInitialPos(e.clientX);
        setInitialSize(resizable.current.offsetWidth);
        console.log(resizable.current.offsetWidth)
    }

    const resizeLeft = (e) => {
        resizable.current.style.width = `${parseInt(initialSize) + parseInt(initialPos - e.clientX)}px`;
    }

    const resizeRight = (e) => {
        resizable.current.style.width = `${parseInt(initialSize) + parseInt(e.clientX - initialPos)}px`;
    }

    return (
        <div className="containerResize">
            <button onClick={savePng}>Save</button>
            <div
                id="Draggable"
                draggable="true"
                onDragStart={initial}
                onDrag={resizeLeft}
            />
            <div id="Resizable" ref={resizable}>
                <PostViewer tweetParam={props.tweetParam} />
            </div>
            <div
                id="Draggable"
                draggable="true"
                onDragStart={initial}
                onDrag={resizeRight}
            />
        </div>
    );
}

export default ContainerResize;

右边的调整大小很好,但左边的大小调整不起作用。实际上,当我用左侧拖动时,div被正确地调整了大小,但是当我放下按钮时,div重新定位。

你有办法解决我的问题吗?

非常感谢你的回答:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-03 09:11:21

这是个超级烦人的虫子。问题是,当鼠标在onDrag期间释放时,事件会被触发,event.clientX被设置为0。

解决这个问题的一个快速方法是检查event.clientX === 0是否退出该函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74287647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档