我想在点击或拖动时将可拖动的框移到最前面。
我事先不知道这样的框的最大数量,因为我有一个按钮,当用户单击该按钮时,会创建一个新的可拖动框。
无论有多少个框,该按钮都应始终位于顶部,因此其z-index应始终是最大的。
所以这些是我的问题:
- 如何在用户单击它时将框移到最前面。
- 如何使按钮保持在最前面。
而我对ReactJS还很陌生。
这是我目前在MyComponent.js中拥有的内容。
import React, { useState } from 'react';
import Draggable from 'react-draggable';
function MyComponent() {
const [currZIndex, setZIndex] = useState(0);
const bringForward = () => {
setZIndex(currZIndex + 1);
}
return (
<Draggable onMouseDown={bringForward}>
<div className="mydiv" style={{zIndex: currZIndex}}></div>
</Draggable>
);
}
我目前实现的问题是每个组件只知道自己的z-index,但不知道当前最高的z-index。而且每当我点击任何div时,z-index都会增加,这使得z-index变得不必要地大。
如果div1的z-index为6,div2的z-index为2,则我必须点击div2 5次才能使其z-index变为7,以将div2置于最前面。
我仍然没有想出如何处理按钮的z-index的想法。
对于此,这是我在App.js中拥有的内容。
import React, { useState } from 'react';
import MyComponent from './MyComponent';
function App() {
const [componentList, setComponentList] = useState([]);
function addNewComponent() {
setComponentList(componentList.concat(<MyComponent key={componentList.length} />));
}
return (
<div>
<button onClick={addNewComponent}>New Component</button>
{componentList}
</div>
);
}