(Visual representation of @lavrton's answer)

import React, { useState } from 'react'
import { Stage, Layer, Rect, Text, Image } from 'react-konva'
import useImage from 'use-image'
export default function KonvaBoard() {
let initState = {
isDragging: false,
x: 50,
y: 50,
}
const [state, setState] = React.useState(initState)
const convertImage = (imageUrl, index) => {
const [img] = useImage(imageUrl[0])
return (
<Image
key={index}
image={img}
width={100}
height={100}
x={imageUrl[1].x}
y={imageUrl[1].y}
draggable
/>
)
}
const logos = [
['../assets/icons/angular.svg', { x: 10, y: 10 }],
['../assets/icons/css3.svg', { x: 130, y: 30 }],
['../assets/icons/flutter.svg', { x: 240, y: 40 }],
]
return (
<div style={{ textAlign: 'center', minHeight: '90vh' }}>
<div>KONVA BOARD</div>
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
{logos.map((logo, index) => {
return convertImage(logo, index)
})}
</Layer>
</Stage>
</div>
)
}