【发布时间】:2021-08-13 13:54:29
【问题描述】:
在向框中添加元素时,我正在努力解决反应性能问题。为此,我使用 React Rnd 库。
我有一个地图,当数组中有新项目时呈现项目:
children.map((children, index) => (
<Box
key={children.id}
isPreview={false}
index={index}
slot={name}
{...children}
/>
)),
Box 组件是库中的Rnd 组件,它实际上是一个很大的组件。
<Rnd
style={{
//2 lines off css
}}
minHeight={MIN_SIZE}
minWidth={MIN_SIZE}
enableResizing={isResizingEnabled}
disableDragging={condition}
size={size}
position={Position}
lockAspectRatio={isAspectRatioLocked}
onResizeStart={onResizeStart}
onDragStop={(e, newPosition) => {
onDragStop(newPosition)
}}
onResizeStop={(e, dir, ref, delta, newPosition) =>
onResizeStop(ref, newPosition)
}
resizeHandleComponent={createResizeHandles(isInCollision)}
dragGrid={grid}
resizeGrid={grid}
bounds="parent"
>
<StyledDiv
onClick={() => {
dispatch(actions.setEditMode({...properties}))
}}
isBeingCropped={isCroppingEnabled}
isPreview={isPreview}
isEditable={isEditable}
isInCollision={isInCollision}
isEditStartable={isEditStartable}
>
{children}
</StyledDiv>
</Rnd>
问题是当我向这个盒子添加 4 个元素时,有时需要 2-4 秒... 知道如何解决吗?
是否有任何简单的解决方案可以使其更快,或者我是否必须研究每个函数/挂钩并使用一些 useCallback、useMemo 或其他东西对其进行优化?
【问题讨论】:
标签: javascript reactjs drag-and-drop