From 12e6cadf183d4c35729dc65993483fe36a36b0d2 Mon Sep 17 00:00:00 2001
From: ajuner <106791576@qq.com>
Date: Sun, 15 Nov 2020 00:31:06 +0800
Subject: [PATCH 1/5] fix: declare Tree Component type
---
components/tree/DirectoryTree.tsx | 30 ++++++-------
components/tree/Tree.tsx | 72 ++++++++++++++++++++++++-------
components/tree/util.ts | 23 ++++++----
3 files changed, 85 insertions(+), 40 deletions(-)
diff --git a/components/tree/DirectoryTree.tsx b/components/tree/DirectoryTree.tsx
index f66ff57ce5..fd651f750a 100644
--- a/components/tree/DirectoryTree.tsx
+++ b/components/tree/DirectoryTree.tsx
@@ -1,4 +1,4 @@
-import { defineComponent, inject } from 'vue';
+import { defineComponent, inject, VNode } from 'vue';
import omit from 'omit.js';
import debounce from 'lodash-es/debounce';
import FolderOpenOutlined from '@ant-design/icons-vue/FolderOpenOutlined';
@@ -7,7 +7,7 @@ import FileOutlined from '@ant-design/icons-vue/FileOutlined';
import PropTypes from '../_util/vue-types';
import classNames from '../_util/classNames';
import { conductExpandParent, convertTreeToEntities } from '../vc-tree/src/util';
-import Tree, { TreeProps } from './Tree';
+import Tree, { CheckEvent, ExpendEvent, SelectEvent, TreeProps } from './Tree';
import {
calcRangeKeys,
getFullKeyList,
@@ -25,11 +25,11 @@ import { defaultConfigProvider } from '../config-provider';
// selectedKeys?: string[]; }
export interface DirectoryTreeState {
- _expandedKeys?: string[];
- _selectedKeys?: string[];
+ _expandedKeys?: (string | number)[];
+ _selectedKeys?: (string | number)[];
}
-function getIcon(props) {
+function getIcon(props: {isLeaf:boolean, expanded:boolean} & VNode) {
const { isLeaf, expanded } = props;
if (isLeaf) {
return ;
@@ -56,7 +56,7 @@ export default defineComponent({
children: null,
onDebounceExpand: null,
tree: null,
- lastSelectedKey: [],
+ lastSelectedKey: '',
cachedSelectedKeys: [],
configProvider: inject('configProvider', defaultConfigProvider),
};
@@ -100,7 +100,7 @@ export default defineComponent({
this.onDebounceExpand = debounce(this.expandFolderNode, 200, { leading: true });
},
methods: {
- handleExpand(expandedKeys, info) {
+ handleExpand(expandedKeys: (string | number)[], info: ExpendEvent) {
this.setUncontrolledState({ _expandedKeys: expandedKeys });
this.$emit('update:expandedKeys', expandedKeys);
this.$emit('expand', expandedKeys, info);
@@ -108,7 +108,7 @@ export default defineComponent({
return undefined;
},
- handleClick(event, node) {
+ handleClick(event: MouseEvent, node: VNode) {
const { expandAction } = this.$props;
// Expand the tree
@@ -118,7 +118,7 @@ export default defineComponent({
this.$emit('click', event, node);
},
- handleDoubleClick(event, node) {
+ handleDoubleClick(event: MouseEvent, node: VNode) {
const { expandAction } = this.$props;
// Expand the tree
@@ -130,7 +130,7 @@ export default defineComponent({
this.$emit('dblclick', event, node);
},
- hanldeSelect(keys, event) {
+ hanldeSelect(keys: (string | number)[], event: SelectEvent) {
const { multiple } = this.$props;
const children = this.children || [];
const { _expandedKeys: expandedKeys = [] } = this.$data;
@@ -150,7 +150,7 @@ export default defineComponent({
const shiftPick = nativeEvent.shiftKey;
// Generate new selected keys
- let newSelectedKeys;
+ let newSelectedKeys: (string | number)[];
if (multiple && ctrlPick) {
// Control click
newSelectedKeys = keys;
@@ -180,11 +180,11 @@ export default defineComponent({
this.setUncontrolledState(newState);
},
- setTreeRef(node) {
+ setTreeRef(node: VNode) {
this.tree = node;
},
- expandFolderNode(event, node) {
+ expandFolderNode(event: MouseEvent, node: {isLeaf: boolean} & VNode) {
const { isLeaf } = node;
if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {
@@ -201,7 +201,7 @@ export default defineComponent({
}
},
- setUncontrolledState(state) {
+ setUncontrolledState(state: unknown) {
const newState = omit(
state,
Object.keys(getOptionProps(this)).map(p => `_${p}`),
@@ -210,7 +210,7 @@ export default defineComponent({
this.setState(newState);
}
},
- handleCheck(checkedObj, eventObj) {
+ handleCheck(checkedObj: (string | number)[], eventObj: CheckEvent) {
this.$emit('update:checkedKeys', checkedObj);
this.$emit('check', checkedObj, eventObj);
},
diff --git a/components/tree/Tree.tsx b/components/tree/Tree.tsx
index 5cfa071326..5235c3ed65 100644
--- a/components/tree/Tree.tsx
+++ b/components/tree/Tree.tsx
@@ -1,4 +1,4 @@
-import { defineComponent, inject } from 'vue';
+import { defineComponent, inject, VNode } from 'vue';
import classNames from '../_util/classNames';
import LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';
import FileOutlined from '@ant-design/icons-vue/FileOutlined';
@@ -14,6 +14,46 @@ import { cloneElement } from '../_util/vnode';
import { defaultConfigProvider } from '../config-provider';
const TreeNode = VcTree.TreeNode;
+
+export interface TreeDataItem {
+ key: string | number,
+ title: string,
+ isLeaf: boolean,
+ selectable: boolean,
+ disableCheckbox: boolean,
+ disabled: boolean,
+ class?: string,
+ style?: any,
+ checkable?: boolean,
+ icon?: any,
+ slots?: any,
+ scopedSlots?: any,
+ switcherIcon?: any,
+}
+
+interface DefaultEvent {
+ nativeEvent: MouseEvent,
+ node: any,
+}
+
+export interface CheckEvent extends DefaultEvent {
+ checked: boolean,
+ checkedNodes: VNode[],
+ checkedNodesPositions: {node: VNode,pos: string | number}[],
+ event: string,
+ halfCheckedKeys: (string | number)[],
+}
+
+export interface ExpendEvent extends DefaultEvent {
+ expanded: boolean,
+}
+
+export interface SelectEvent extends DefaultEvent {
+ event: string,
+ selected: boolean,
+ selectedNodes: VNode[]
+}
+
function TreeProps() {
return {
showLine: PropTypes.looseBool,
@@ -32,30 +72,30 @@ function TreeProps() {
/** 默认展开对应树节点 */
defaultExpandParent: PropTypes.looseBool,
/** 默认展开指定的树节点 */
- defaultExpandedKeys: PropTypes.array,
+ defaultExpandedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** (受控)展开指定的树节点 */
- expandedKeys: PropTypes.array,
+ expandedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** (受控)选中复选框的树节点 */
checkedKeys: PropTypes.oneOfType([
- PropTypes.array,
+ PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
PropTypes.shape({
- checked: PropTypes.array,
- halfChecked: PropTypes.array,
+ checked: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
+ halfChecked: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
}).loose,
]),
/** 默认选中复选框的树节点 */
- defaultCheckedKeys: PropTypes.array,
+ defaultCheckedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** (受控)设置选中的树节点 */
- selectedKeys: PropTypes.array,
+ selectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** 默认选中的树节点 */
- defaultSelectedKeys: PropTypes.array,
+ defaultSelectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
selectable: PropTypes.looseBool,
/** filter some AntTreeNodes as you need. it should return true */
filterAntTreeNode: PropTypes.func,
/** 异步加载数据 */
loadData: PropTypes.func,
- loadedKeys: PropTypes.array,
+ loadedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
// onLoaded: (loadedKeys: string[], info: { event: 'load', node: AntTreeNode; }) => void,
/** 响应右键点击 */
// onRightClick: (options: AntTreeNodeMouseEvent) => void,
@@ -123,7 +163,7 @@ export default defineComponent({
},
TreeNode,
methods: {
- renderSwitcherIcon(prefixCls: string, switcherIcon, { isLeaf, loading, expanded }) {
+ renderSwitcherIcon(prefixCls: string, switcherIcon: VNode, { isLeaf, loading, expanded }) {
const { showLine } = this.$props;
if (loading) {
return ;
@@ -148,7 +188,7 @@ export default defineComponent({
);
},
- updateTreeData(treeData) {
+ updateTreeData(treeData: TreeDataItem[]) {
const { $slots } = this;
const defaultFields = { children: 'children', title: 'title', key: 'key' };
const replaceFields = { ...defaultFields, ...this.$props.replaceFields };
@@ -179,18 +219,18 @@ export default defineComponent({
return treeNodeProps;
});
},
- setTreeRef(node) {
+ setTreeRef(node: VNode) {
this.tree = node;
},
- handleCheck(checkedObj, eventObj) {
+ handleCheck(checkedObj: (number | string)[], eventObj: CheckEvent) {
this.$emit('update:checkedKeys', checkedObj);
this.$emit('check', checkedObj, eventObj);
},
- handleExpand(expandedKeys, eventObj) {
+ handleExpand(expandedKeys: (number | string)[], eventObj: ExpendEvent) {
this.$emit('update:expandedKeys', expandedKeys);
this.$emit('expand', expandedKeys, eventObj);
},
- handleSelect(selectedKeys: string[], eventObj) {
+ handleSelect(selectedKeys: (number | string)[], eventObj: SelectEvent) {
this.$emit('update:selectedKeys', selectedKeys);
this.$emit('select', selectedKeys, eventObj);
},
diff --git a/components/tree/util.ts b/components/tree/util.ts
index 8052eed89a..b253946344 100644
--- a/components/tree/util.ts
+++ b/components/tree/util.ts
@@ -1,5 +1,7 @@
+import { VNode } from 'vue';
import { getNodeChildren, convertTreeToEntities } from '../vc-tree/src/util';
import { getSlot } from '../_util/props-util';
+import { TreeDataItem } from './Tree';
enum Record {
None,
@@ -7,11 +9,14 @@ enum Record {
End,
}
+type TreeKey = string | number
+
// TODO: Move this logic into `rc-tree`
-function traverseNodesKey(rootChildren, callback) {
+function traverseNodesKey(rootChildren: VNode[], callback?: Function) {
+ console.log(rootChildren)
const nodeList = getNodeChildren(rootChildren) || [];
- function processNode(node) {
+ function processNode(node: VNode) {
const { key } = node;
const children = getSlot(node);
if (callback(key, node) !== false) {
@@ -22,13 +27,13 @@ function traverseNodesKey(rootChildren, callback) {
nodeList.forEach(processNode);
}
-export function getFullKeyList(children) {
+export function getFullKeyList(children: VNode[]) {
const { keyEntities } = convertTreeToEntities(children);
return [...keyEntities.keys()];
}
/** 计算选中范围,只考虑expanded情况以优化性能 */
-export function calcRangeKeys(rootChildren, expandedKeys, startKey, endKey) {
+export function calcRangeKeys(rootChildren: VNode[], expandedKeys: TreeKey[], startKey: TreeKey, endKey: TreeKey) {
const keys = [];
let record = Record.None;
@@ -39,11 +44,11 @@ export function calcRangeKeys(rootChildren, expandedKeys, startKey, endKey) {
return [];
}
- function matchKey(key) {
+ function matchKey(key: TreeKey) {
return key === startKey || key === endKey;
}
- traverseNodesKey(rootChildren, key => {
+ traverseNodesKey(rootChildren, (key: TreeKey) => {
if (record === Record.End) {
return false;
}
@@ -73,7 +78,7 @@ export function calcRangeKeys(rootChildren, expandedKeys, startKey, endKey) {
return keys;
}
-export function convertDirectoryKeysToNodes(rootChildren, keys) {
+export function convertDirectoryKeysToNodes(rootChildren: VNode[], keys: TreeKey[]) {
const restKeys = [...keys];
const nodes = [];
traverseNodesKey(rootChildren, (key, node) => {
@@ -88,9 +93,9 @@ export function convertDirectoryKeysToNodes(rootChildren, keys) {
return nodes;
}
-export function getFullKeyListByTreeData(treeData: any, replaceFields: any = {}) {
+export function getFullKeyListByTreeData(treeData: TreeDataItem[], replaceFields: any = {}) {
let keys = [];
- const { key = 'key', children = 'children' } = replaceFields(treeData || []).forEach(item => {
+ const { key = 'key', children = 'children' } = replaceFields(treeData || []).forEach((item: TreeDataItem) => {
keys.push(item[key]);
if (item[children]) {
keys = [...keys, ...getFullKeyListByTreeData(item[children], replaceFields)];
From 3e627f8b8bb6b27c16d4cc9d1120592ffc980a29 Mon Sep 17 00:00:00 2001
From: cj01 <106791576@qq.com>
Date: Mon, 16 Nov 2020 10:25:18 +0800
Subject: [PATCH 2/5] fix: lint
---
components/menu/index.tsx | 2 +-
components/tree/DirectoryTree.tsx | 4 +--
components/tree/Tree.tsx | 60 +++++++++++++++++--------------
components/tree/util.ts | 26 ++++++++------
4 files changed, 52 insertions(+), 40 deletions(-)
diff --git a/components/menu/index.tsx b/components/menu/index.tsx
index 36c83ef4eb..467bba866c 100644
--- a/components/menu/index.tsx
+++ b/components/menu/index.tsx
@@ -165,7 +165,7 @@ const Menu = defineComponent({
// Fix SVGElement e.target.className.indexOf is not a function
// https://github.com/ant-design/ant-design/issues/15699
- const { className } = e.target as (SVGAnimationElement | HTMLElement);
+ const { className } = e.target as SVGAnimationElement | HTMLElement;
// SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during an animation.
const classNameValue =
Object.prototype.toString.call(className) === '[object SVGAnimatedString]'
diff --git a/components/tree/DirectoryTree.tsx b/components/tree/DirectoryTree.tsx
index fd651f750a..3c153aa0e2 100644
--- a/components/tree/DirectoryTree.tsx
+++ b/components/tree/DirectoryTree.tsx
@@ -29,7 +29,7 @@ export interface DirectoryTreeState {
_selectedKeys?: (string | number)[];
}
-function getIcon(props: {isLeaf:boolean, expanded:boolean} & VNode) {
+function getIcon(props: { isLeaf: boolean; expanded: boolean } & VNode) {
const { isLeaf, expanded } = props;
if (isLeaf) {
return ;
@@ -184,7 +184,7 @@ export default defineComponent({
this.tree = node;
},
- expandFolderNode(event: MouseEvent, node: {isLeaf: boolean} & VNode) {
+ expandFolderNode(event: MouseEvent, node: { isLeaf: boolean } & VNode) {
const { isLeaf } = node;
if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {
diff --git a/components/tree/Tree.tsx b/components/tree/Tree.tsx
index 5235c3ed65..41d274f873 100644
--- a/components/tree/Tree.tsx
+++ b/components/tree/Tree.tsx
@@ -16,42 +16,42 @@ import { defaultConfigProvider } from '../config-provider';
const TreeNode = VcTree.TreeNode;
export interface TreeDataItem {
- key: string | number,
- title: string,
- isLeaf: boolean,
- selectable: boolean,
- disableCheckbox: boolean,
- disabled: boolean,
- class?: string,
- style?: any,
- checkable?: boolean,
- icon?: any,
- slots?: any,
- scopedSlots?: any,
- switcherIcon?: any,
+ key: string | number;
+ title: string;
+ isLeaf: boolean;
+ selectable: boolean;
+ disableCheckbox: boolean;
+ disabled: boolean;
+ class?: string;
+ style?: any;
+ checkable?: boolean;
+ icon?: any;
+ slots?: any;
+ scopedSlots?: any;
+ switcherIcon?: any;
}
interface DefaultEvent {
- nativeEvent: MouseEvent,
- node: any,
+ nativeEvent: MouseEvent;
+ node: any;
}
export interface CheckEvent extends DefaultEvent {
- checked: boolean,
- checkedNodes: VNode[],
- checkedNodesPositions: {node: VNode,pos: string | number}[],
- event: string,
- halfCheckedKeys: (string | number)[],
+ checked: boolean;
+ checkedNodes: VNode[];
+ checkedNodesPositions: { node: VNode; pos: string | number }[];
+ event: string;
+ halfCheckedKeys: (string | number)[];
}
export interface ExpendEvent extends DefaultEvent {
- expanded: boolean,
+ expanded: boolean;
}
export interface SelectEvent extends DefaultEvent {
- event: string,
- selected: boolean,
- selectedNodes: VNode[]
+ event: string;
+ selected: boolean;
+ selectedNodes: VNode[];
}
function TreeProps() {
@@ -72,7 +72,9 @@ function TreeProps() {
/** 默认展开对应树节点 */
defaultExpandParent: PropTypes.looseBool,
/** 默认展开指定的树节点 */
- defaultExpandedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
+ defaultExpandedKeys: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ ),
/** (受控)展开指定的树节点 */
expandedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** (受控)选中复选框的树节点 */
@@ -84,11 +86,15 @@ function TreeProps() {
}).loose,
]),
/** 默认选中复选框的树节点 */
- defaultCheckedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
+ defaultCheckedKeys: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ ),
/** (受控)设置选中的树节点 */
selectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** 默认选中的树节点 */
- defaultSelectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
+ defaultSelectedKeys: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ ),
selectable: PropTypes.looseBool,
/** filter some AntTreeNodes as you need. it should return true */
diff --git a/components/tree/util.ts b/components/tree/util.ts
index b253946344..0a7b35b755 100644
--- a/components/tree/util.ts
+++ b/components/tree/util.ts
@@ -9,11 +9,10 @@ enum Record {
End,
}
-type TreeKey = string | number
+type TreeKey = string | number;
// TODO: Move this logic into `rc-tree`
function traverseNodesKey(rootChildren: VNode[], callback?: Function) {
- console.log(rootChildren)
const nodeList = getNodeChildren(rootChildren) || [];
function processNode(node: VNode) {
@@ -33,7 +32,12 @@ export function getFullKeyList(children: VNode[]) {
}
/** 计算选中范围,只考虑expanded情况以优化性能 */
-export function calcRangeKeys(rootChildren: VNode[], expandedKeys: TreeKey[], startKey: TreeKey, endKey: TreeKey) {
+export function calcRangeKeys(
+ rootChildren: VNode[],
+ expandedKeys: TreeKey[],
+ startKey: TreeKey,
+ endKey: TreeKey,
+) {
const keys = [];
let record = Record.None;
@@ -81,7 +85,7 @@ export function calcRangeKeys(rootChildren: VNode[], expandedKeys: TreeKey[], st
export function convertDirectoryKeysToNodes(rootChildren: VNode[], keys: TreeKey[]) {
const restKeys = [...keys];
const nodes = [];
- traverseNodesKey(rootChildren, (key, node) => {
+ traverseNodesKey(rootChildren, (key: TreeKey, node: VNode) => {
const index = restKeys.indexOf(key);
if (index !== -1) {
nodes.push(node);
@@ -95,11 +99,13 @@ export function convertDirectoryKeysToNodes(rootChildren: VNode[], keys: TreeKey
export function getFullKeyListByTreeData(treeData: TreeDataItem[], replaceFields: any = {}) {
let keys = [];
- const { key = 'key', children = 'children' } = replaceFields(treeData || []).forEach((item: TreeDataItem) => {
- keys.push(item[key]);
- if (item[children]) {
- keys = [...keys, ...getFullKeyListByTreeData(item[children], replaceFields)];
- }
- });
+ const { key = 'key', children = 'children' } = replaceFields(treeData || []).forEach(
+ (item: TreeDataItem) => {
+ keys.push(item[key]);
+ if (item[children]) {
+ keys = [...keys, ...getFullKeyListByTreeData(item[children], replaceFields)];
+ }
+ },
+ );
return keys;
}
From 08263e1686be40b3a8a9d86909f0a84a816708dd Mon Sep 17 00:00:00 2001
From: ajuner <106791576@qq.com>
Date: Tue, 17 Nov 2020 22:23:54 +0800
Subject: [PATCH 3/5] fix: update TreeDataItem
---
components/tree/Tree.tsx | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/components/tree/Tree.tsx b/components/tree/Tree.tsx
index 41d274f873..225739bf7b 100644
--- a/components/tree/Tree.tsx
+++ b/components/tree/Tree.tsx
@@ -16,12 +16,13 @@ import { defaultConfigProvider } from '../config-provider';
const TreeNode = VcTree.TreeNode;
export interface TreeDataItem {
- key: string | number;
- title: string;
- isLeaf: boolean;
- selectable: boolean;
- disableCheckbox: boolean;
- disabled: boolean;
+ key?: string | number;
+ title?: string;
+ isLeaf?: boolean;
+ selectable?: boolean;
+ children?: TreeDataItem[];
+ disableCheckbox?: boolean;
+ disabled?: boolean;
class?: string;
style?: any;
checkable?: boolean;
From 40cc10f2afc55cd61d2509412449220e39db0d84 Mon Sep 17 00:00:00 2001
From: ajuner <106791576@qq.com>
Date: Tue, 17 Nov 2020 22:55:43 +0800
Subject: [PATCH 4/5] fix: remove scopedSlots
---
components/tree/Tree.tsx | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/components/tree/Tree.tsx b/components/tree/Tree.tsx
index 225739bf7b..0e0a625b5d 100644
--- a/components/tree/Tree.tsx
+++ b/components/tree/Tree.tsx
@@ -28,7 +28,6 @@ export interface TreeDataItem {
checkable?: boolean;
icon?: any;
slots?: any;
- scopedSlots?: any;
switcherIcon?: any;
}
@@ -202,16 +201,14 @@ export default defineComponent({
return treeData.map(item => {
const key = item[replaceFields.key];
const children = item[replaceFields.children];
- const { slots = {}, scopedSlots = {}, class: cls, style, ...restProps } = item;
+ const { slots = {}, class: cls, style, ...restProps } = item;
const treeNodeProps = {
...restProps,
- icon: $slots[scopedSlots.icon] || $slots[slots.icon] || restProps.icon,
+ icon: $slots[slots.icon] || restProps.icon,
switcherIcon:
- $slots[scopedSlots.switcherIcon] ||
$slots[slots.switcherIcon] ||
restProps.switcherIcon,
title:
- $slots[scopedSlots.title] ||
$slots[slots.title] ||
$slots.title ||
restProps[replaceFields.title],
From f606e04d6cf18be6a84ef2b453a60e0744c8f6ce Mon Sep 17 00:00:00 2001
From: cj01 <106791576@qq.com>
Date: Wed, 18 Nov 2020 11:09:55 +0800
Subject: [PATCH 5/5] fix: update prop treeData
---
components/tree/Tree.tsx | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/components/tree/Tree.tsx b/components/tree/Tree.tsx
index 0e0a625b5d..97ec4bcc90 100644
--- a/components/tree/Tree.tsx
+++ b/components/tree/Tree.tsx
@@ -1,4 +1,4 @@
-import { defineComponent, inject, VNode } from 'vue';
+import { defineComponent, inject, VNode, PropType } from 'vue';
import classNames from '../_util/classNames';
import LoadingOutlined from '@ant-design/icons-vue/LoadingOutlined';
import FileOutlined from '@ant-design/icons-vue/FileOutlined';
@@ -123,7 +123,9 @@ function TreeProps() {
prefixCls: PropTypes.string,
filterTreeNode: PropTypes.func,
openAnimation: PropTypes.any,
- treeData: PropTypes.array,
+ treeData: {
+ type: Array as PropType,
+ },
/**
* @default{title,key,children}
* 替换treeNode中 title,key,children字段为treeData中对应的字段
@@ -205,13 +207,8 @@ export default defineComponent({
const treeNodeProps = {
...restProps,
icon: $slots[slots.icon] || restProps.icon,
- switcherIcon:
- $slots[slots.switcherIcon] ||
- restProps.switcherIcon,
- title:
- $slots[slots.title] ||
- $slots.title ||
- restProps[replaceFields.title],
+ switcherIcon: $slots[slots.switcherIcon] || restProps.switcherIcon,
+ title: $slots[slots.title] || $slots.title || restProps[replaceFields.title],
dataRef: item,
key,
class: cls,