chore: Performance optimizations

# What's changed?

* Remove keys
* Stabilize props
* Force reset store on unmount
This commit is contained in:
Braks
2022-04-24 13:34:22 +02:00
parent ad07b5b6ea
commit b6d8b57859
9 changed files with 73 additions and 44 deletions
@@ -1,8 +1,22 @@
<script lang="ts" setup>
import NodeWrapper from '../../components/Nodes/NodeWrapper.vue'
import { useVueFlow } from '../../composables'
import { GraphNode, SnapGrid } from '../../types'
const { store } = useVueFlow()
interface Props {
draggable?: boolean
selectable?: boolean
connectable?: boolean
snapToGrid?: boolean
snapGrid?: SnapGrid
nodes: GraphNode[]
}
const props = defineProps<Props>()
const draggable = (d?: boolean) => (typeof d === 'undefined' ? props.draggable : d)
const selectable = (s?: boolean) => (typeof s === 'undefined' ? props.selectable : s)
const connectable = (c?: boolean) => (typeof c === 'undefined' ? props.connectable : c)
const snapGrid = (sg?: SnapGrid) => (sg ?? props.snapToGrid ? props.snapGrid : undefined)
</script>
<script lang="ts">
export default {
@@ -12,14 +26,14 @@ export default {
<template>
<div class="vue-flow__nodes vue-flow__container">
<NodeWrapper
v-for="node of store.getNodes"
v-for="node of props.nodes"
:id="node.id"
:key="node.id"
:node="node"
:draggable="typeof node.draggable === 'undefined' ? store.nodesDraggable : !!node.draggable"
:selectable="typeof node.selectable === 'undefined' ? store.elementsSelectable : !!node.selectable"
:connectable="typeof node.connectable === 'undefined' ? store.nodesConnectable : !!node.connectable"
:snap-grid="node.snapGrid ?? (store.snapToGrid ? store.snapGrid : undefined)"
:draggable="draggable(node.draggable)"
:selectable="selectable(node.selectable)"
:connectable="connectable(node.connectable)"
:snap-grid="snapGrid(node.snapGrid)"
/>
</div>
</template>