Fix treeNode enhancer

This commit is contained in:
Thomas Nordquist
2019-07-17 09:18:06 +02:00
parent 3737410563
commit 33f3458e38

View File

@@ -6,9 +6,20 @@ import { useState, useEffect } from 'react'
*/ */
export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) { export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) {
const [treeNode, setTreeNode] = useState<q.TreeNode<any> | undefined>() const [treeNode, setTreeNode] = useState<q.TreeNode<any> | undefined>()
useEffect(() => {
// If treeNode has been destroyed set treeNode to undefined
if (treeNode) {
const resetTreeNodeCallback = () => setTreeNode(undefined)
treeNode.onDestroy.subscribe(resetTreeNodeCallback)
return function cleanup() {
treeNode.onDestroy.unsubscribe(resetTreeNodeCallback)
}
}
}, [treeNode])
function pollUntilTreeNodeHasBeenFound() { function pollUntilTreeNodeHasBeenFound() {
if (!tree) { if (!tree || treeNode) {
return return
} }
@@ -33,6 +44,6 @@ export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: s
} }
} }
useEffect(pollUntilTreeNodeHasBeenFound, [tree]) useEffect(pollUntilTreeNodeHasBeenFound, [tree, treeNode])
return treeNode return treeNode
} }