chore: Performance optimizations
# What's changed? * Remove keys * Stabilize props * Force reset store on unmount
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user