帮我用react hooks 写一个可拖拽 放大缩小的组件
时间: 2024-03-05 11:50:05 浏览: 89
React可拖动组件
好的,我可以为您提供一个基本的可拖拽和放大缩小的组件,使用React Hooks 和 CSS transform 属性。
首先,我们需要使用 `useState` hook 来保存组件的状态。我们需要跟踪图片的位置和缩放比例。下面是一个例子:
```jsx
import React, { useState } from 'react';
function DraggableImage(props) {
const [position, setPosition] = useState({ x: 0, y: 0 });
const [scale, setScale] = useState(1);
const handleDrag = (e) => {
setPosition({
x: position.x + e.movementX,
y: position.y + e.movementY,
});
};
const handleWheel = (e) => {
setScale(scale + e.deltaY * -0.01);
};
return (
<div
style={{
transform: `translate(${position.x}px, ${position.y}px) scale(${scale})`,
}}
onDrag={handleDrag}
onWheel={handleWheel}
draggable
>
<img src={props.src} alt={props.alt} />
</div>
);
}
export default DraggableImage;
```
在这个例子中,我们创建了一个 `DraggableImage` 组件,它接受 `src` 和 `alt` 属性作为图片的来源和替换文本。我们使用 `useState` hook 来保存图片的位置和缩放比例,然后在组件中使用 `transform` 属性来设置 CSS 属性。我们还使用 `onDrag` 和 `onWheel` 事件来处理拖动和缩放。
注意,我们将 `div` 元素设置为可拖拽,而不是 `img` 元素。这是因为 `img` 元素本身不支持拖动,但是我们可以使用包装的 `div` 元素来实现拖动和缩放。
这只是一个简单的例子,您可以根据自己的需要进行更改和扩展。希望这可以帮助您开始构建您的可拖拽和缩放的组件!
阅读全文