diff --git a/components/tree-select/__tests__/__snapshots__/demo.test.js.snap b/components/tree-select/__tests__/__snapshots__/demo.test.js.snap index ed59dd8ad..750fe226a 100644 --- a/components/tree-select/__tests__/__snapshots__/demo.test.js.snap +++ b/components/tree-select/__tests__/__snapshots__/demo.test.js.snap @@ -134,11 +134,15 @@ exports[`renders ./components/tree-select/demo/suffix.vue correctly 1`] = ` exports[`renders ./components/tree-select/demo/tree-line.vue correctly 1`] = `
diff --git a/components/tree/__tests__/__snapshots__/demo.test.js.snap b/components/tree/__tests__/__snapshots__/demo.test.js.snap index 08104b45d..e811539fd 100644 --- a/components/tree/__tests__/__snapshots__/demo.test.js.snap +++ b/components/tree/__tests__/__snapshots__/demo.test.js.snap @@ -304,9 +304,13 @@ exports[`renders ./components/tree/demo/dynamic.vue correctly 1`] = ` exports[`renders ./components/tree/demo/line.vue correctly 1`] = `
showLine:

showIcon:
diff --git a/components/vc-tree/Tree.tsx b/components/vc-tree/Tree.tsx index 1fceb7bee..0bcfbe5f2 100644 --- a/components/vc-tree/Tree.tsx +++ b/components/vc-tree/Tree.tsx @@ -25,11 +25,11 @@ import DropIndicator from './DropIndicator'; import { computed, defineComponent, - onMounted, onUnmounted, reactive, ref, shallowRef, + watch, watchEffect, } from 'vue'; import initDefaultProps from '../_util/props-util/initDefaultProps'; @@ -145,34 +145,63 @@ export default defineComponent({ }); let init = false; // 处理 defaultXxxx api, 仅仅首次有效 - onMounted(() => { - init = true; - }); - // ================ expandedKeys ================= - watchEffect(() => { - let keys = expandedKeys.value; - // ================ expandedKeys ================= - if (props.expandedKeys !== undefined || (init && props.autoExpandParent)) { - keys = - props.autoExpandParent || (!init && props.defaultExpandParent) - ? conductExpandParent(props.expandedKeys, keyEntities.value) - : props.expandedKeys; - } else if (!init && props.defaultExpandAll) { - const cloneKeyEntities = { ...keyEntities.value }; - delete cloneKeyEntities[MOTION_KEY]; - keys = Object.keys(cloneKeyEntities).map(key => cloneKeyEntities[key].key); - } else if (!init && props.defaultExpandedKeys) { - keys = - props.autoExpandParent || props.defaultExpandParent - ? conductExpandParent(props.defaultExpandedKeys, keyEntities.value) - : props.defaultExpandedKeys; - } + // watchEffect(() => { + // let keys = expandedKeys.value; + // // ================ expandedKeys ================= + // if (props.expandedKeys !== undefined || (init && props.autoExpandParent)) { + // keys = + // props.autoExpandParent || (!init && props.defaultExpandParent) + // ? conductExpandParent(props.expandedKeys, keyEntities.value) + // : props.expandedKeys; + // } else if (!init && props.defaultExpandAll) { + // const cloneKeyEntities = { ...keyEntities.value }; + // delete cloneKeyEntities[MOTION_KEY]; + // keys = Object.keys(cloneKeyEntities).map(key => cloneKeyEntities[key].key); + // } else if (!init && props.defaultExpandedKeys) { + // keys = + // props.autoExpandParent || props.defaultExpandParent + // ? conductExpandParent(props.defaultExpandedKeys, keyEntities.value) + // : props.defaultExpandedKeys; + // } - if (keys) { - expandedKeys.value = keys; - } - }); + // if (keys) { + // expandedKeys.value = keys; + // } + // }); + + watch( + [() => props.expandedKeys, () => props.autoExpandParent, keyEntities], + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ([_newKeys, newAutoExpandParent], [_oldKeys, oldAutoExpandParent]) => { + let keys = expandedKeys.value; + // ================ expandedKeys ================= + if ( + props.expandedKeys !== undefined || + (init && newAutoExpandParent !== oldAutoExpandParent) + ) { + keys = + props.autoExpandParent || (!init && props.defaultExpandParent) + ? conductExpandParent(props.expandedKeys, keyEntities.value) + : props.expandedKeys; + } else if (!init && props.defaultExpandAll) { + const cloneKeyEntities = { ...keyEntities.value }; + delete cloneKeyEntities[MOTION_KEY]; + keys = Object.keys(cloneKeyEntities).map(key => cloneKeyEntities[key].key); + } else if (!init && props.defaultExpandedKeys) { + keys = + props.autoExpandParent || props.defaultExpandParent + ? conductExpandParent(props.defaultExpandedKeys, keyEntities.value) + : props.defaultExpandedKeys; + } + + if (keys) { + expandedKeys.value = keys; + } + init = true; + }, + { immediate: true }, + ); // ================ flattenNodes ================= const flattenNodes = computed(() => {