fix(core): only trigger store watcher immediately when els were set
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -17,6 +17,7 @@ export const useWatch = (
|
|||||||
let pauseStore: WatchPausableReturn
|
let pauseStore: WatchPausableReturn
|
||||||
|
|
||||||
const immediate = !!(models.modelValue && models.modelValue.value)
|
const immediate = !!(models.modelValue && models.modelValue.value)
|
||||||
|
let immediateStore = !!(store.nodes.value.length || store.edges.value.length)
|
||||||
|
|
||||||
// eslint-disable-next-line prefer-const
|
// eslint-disable-next-line prefer-const
|
||||||
pauseModel = watchPausable(
|
pauseModel = watchPausable(
|
||||||
@@ -27,7 +28,9 @@ export const useWatch = (
|
|||||||
|
|
||||||
store.setElements(elements)
|
store.setElements(elements)
|
||||||
|
|
||||||
pauseStore?.resume()
|
// only trigger store watcher immediately if we actually set any elements to the store
|
||||||
|
if (!pauseStore && !immediateStore && elements.length) immediateStore = true
|
||||||
|
else pauseStore?.resume()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate },
|
{ immediate },
|
||||||
@@ -46,6 +49,7 @@ export const useWatch = (
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{ immediate: immediateStore },
|
||||||
)
|
)
|
||||||
|
|
||||||
onScopeDispose(() => {
|
onScopeDispose(() => {
|
||||||
@@ -61,6 +65,7 @@ export const useWatch = (
|
|||||||
let pauseStore: WatchPausableReturn
|
let pauseStore: WatchPausableReturn
|
||||||
|
|
||||||
const immediate = !!(models.nodes && models.nodes.value)
|
const immediate = !!(models.nodes && models.nodes.value)
|
||||||
|
let immediateStore = !!store.nodes.value.length
|
||||||
|
|
||||||
// eslint-disable-next-line prefer-const
|
// eslint-disable-next-line prefer-const
|
||||||
pauseModel = watchPausable(
|
pauseModel = watchPausable(
|
||||||
@@ -71,23 +76,29 @@ export const useWatch = (
|
|||||||
|
|
||||||
store.setNodes(nodes)
|
store.setNodes(nodes)
|
||||||
|
|
||||||
pauseStore?.resume()
|
// only trigger store watcher immediately if we actually set any elements to the store
|
||||||
|
if (!pauseStore && !immediateStore && nodes.length) immediateStore = true
|
||||||
|
else pauseStore?.resume()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate },
|
{ immediate },
|
||||||
)
|
)
|
||||||
|
|
||||||
pauseStore = watchPausable([store.nodes, () => store.nodes.value.length], ([nodes]) => {
|
pauseStore = watchPausable(
|
||||||
if (models.nodes?.value && Array.isArray(models.nodes.value)) {
|
[store.nodes, () => store.nodes.value.length],
|
||||||
pauseModel?.pause()
|
([nodes]) => {
|
||||||
|
if (models.nodes?.value && Array.isArray(models.nodes.value)) {
|
||||||
|
pauseModel?.pause()
|
||||||
|
|
||||||
models.nodes.value = [...nodes]
|
models.nodes.value = [...nodes]
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
pauseModel?.resume()
|
pauseModel?.resume()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
{ immediate: immediateStore },
|
||||||
|
)
|
||||||
|
|
||||||
onScopeDispose(() => {
|
onScopeDispose(() => {
|
||||||
pauseModel?.stop()
|
pauseModel?.stop()
|
||||||
@@ -102,6 +113,7 @@ export const useWatch = (
|
|||||||
let pauseStore: WatchPausableReturn
|
let pauseStore: WatchPausableReturn
|
||||||
|
|
||||||
const immediate = !!(models.edges && models.edges.value)
|
const immediate = !!(models.edges && models.edges.value)
|
||||||
|
let immediateStore = !!store.edges.value.length
|
||||||
|
|
||||||
// eslint-disable-next-line prefer-const
|
// eslint-disable-next-line prefer-const
|
||||||
pauseModel = watchPausable(
|
pauseModel = watchPausable(
|
||||||
@@ -112,23 +124,29 @@ export const useWatch = (
|
|||||||
|
|
||||||
store.setEdges(edges)
|
store.setEdges(edges)
|
||||||
|
|
||||||
pauseStore?.resume()
|
// only trigger store watcher immediately if we actually set any elements to the store
|
||||||
|
if (!pauseStore && !immediateStore && edges.length) immediateStore = true
|
||||||
|
else pauseStore?.resume()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate },
|
{ immediate },
|
||||||
)
|
)
|
||||||
|
|
||||||
pauseStore = watchPausable([store.edges, () => store.edges.value.length], ([edges]) => {
|
pauseStore = watchPausable(
|
||||||
if (models.edges?.value && Array.isArray(models.edges.value)) {
|
[store.edges, () => store.edges.value.length],
|
||||||
pauseModel?.pause()
|
([edges]) => {
|
||||||
|
if (models.edges?.value && Array.isArray(models.edges.value)) {
|
||||||
|
pauseModel?.pause()
|
||||||
|
|
||||||
models.edges.value = [...edges]
|
models.edges.value = [...edges]
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
pauseModel?.resume()
|
pauseModel?.resume()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
{ immediate: immediateStore },
|
||||||
|
)
|
||||||
|
|
||||||
onScopeDispose(() => {
|
onScopeDispose(() => {
|
||||||
pauseModel?.stop()
|
pauseModel?.stop()
|
||||||
@@ -146,7 +164,6 @@ export const useWatch = (
|
|||||||
store.setMaxZoom(props.maxZoom)
|
store.setMaxZoom(props.maxZoom)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.maxZoom) },
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -160,7 +177,6 @@ export const useWatch = (
|
|||||||
store.setMinZoom(props.minZoom)
|
store.setMinZoom(props.minZoom)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.minZoom) },
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -174,7 +190,6 @@ export const useWatch = (
|
|||||||
store.setTranslateExtent(props.translateExtent)
|
store.setTranslateExtent(props.translateExtent)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.translateExtent) },
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -188,7 +203,6 @@ export const useWatch = (
|
|||||||
store.setNodeExtent(props.nodeExtent)
|
store.setNodeExtent(props.nodeExtent)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.nodeExtent) },
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -202,7 +216,6 @@ export const useWatch = (
|
|||||||
store.applyDefault.value = props.applyDefault
|
store.applyDefault.value = props.applyDefault
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.applyDefault) },
|
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
@@ -247,7 +260,6 @@ export const useWatch = (
|
|||||||
store.autoConnect.value = props.autoConnect
|
store.autoConnect.value = props.autoConnect
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(props.autoConnect) },
|
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
@@ -290,12 +302,12 @@ export const useWatch = (
|
|||||||
scope.run(() => {
|
scope.run(() => {
|
||||||
watch(
|
watch(
|
||||||
model,
|
model,
|
||||||
() => {
|
(nextValue) => {
|
||||||
if (isDef(model)) {
|
if (isDef(nextValue)) {
|
||||||
storedValue.value = model.value
|
storedValue.value = nextValue
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: isDef(model) },
|
{ flush: 'pre' },
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user