Skip to content

Commit b6e2eef

Browse files
authored
chore: Export generate (#365)
* chore: Create a generate * chore: Use context to reduce duplcaite calculation * chore: Move prefixCls out
1 parent 678fbfa commit b6e2eef

File tree

4 files changed

+619
-566
lines changed

4 files changed

+619
-566
lines changed

src/Context.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as React from 'react';
22
import type { IconType } from 'rc-tree/lib/interface';
3-
import type { Key, LegacyDataNode } from './interface';
3+
import type { FlattenDataNode, Key, LegacyDataNode, RawValueType } from './interface';
4+
import type { SkipType } from './hooks/useKeyValueMapping';
45

56
interface ContextProps {
67
checkable: boolean | React.ReactNode;
@@ -19,6 +20,15 @@ interface ContextProps {
1920
treeMotion: any;
2021
loadData: (treeNode: LegacyDataNode) => Promise<unknown>;
2122
onTreeLoad: (loadedKeys: Key[]) => void;
23+
24+
// Cache help content. These can be generated by parent component.
25+
// Let's reuse this.
26+
getEntityByKey: (key: Key, skipType?: SkipType, ignoreDisabledCheck?: boolean) => FlattenDataNode;
27+
getEntityByValue: (
28+
value: RawValueType,
29+
skipType?: SkipType,
30+
ignoreDisabledCheck?: boolean,
31+
) => FlattenDataNode;
2232
}
2333

2434
export const SelectContext = React.createContext<ContextProps>(null);

src/OptionList.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import Tree from 'rc-tree';
77
import type { EventDataNode, ScrollTo } from 'rc-tree/lib/interface';
88
import type { FlattenDataNode, RawValueType, DataNode, TreeDataNode, Key } from './interface';
99
import { SelectContext } from './Context';
10-
import useKeyValueMapping from './hooks/useKeyValueMapping';
11-
import useKeyValueMap from './hooks/useKeyValueMap';
1210

1311
const HIDDEN_STYLE = {
1412
width: 0,
@@ -91,6 +89,9 @@ const OptionList: React.RefForwardingComponent<
9189
treeLoadedKeys,
9290
treeMotion,
9391
onTreeLoad,
92+
93+
getEntityByKey,
94+
getEntityByValue,
9495
} = React.useContext(SelectContext);
9596

9697
const treeRef = React.useRef<Tree>();
@@ -101,9 +102,6 @@ const OptionList: React.RefForwardingComponent<
101102
(prev, next) => next[0] && prev[1] !== next[1],
102103
);
103104

104-
const [cacheKeyMap, cacheValueMap] = useKeyValueMap(flattenOptions);
105-
const [getEntityByKey, getEntityByValue] = useKeyValueMapping(cacheKeyMap, cacheValueMap);
106-
107105
// ========================== Values ==========================
108106
const valueKeys = React.useMemo(
109107
() =>
@@ -283,9 +281,8 @@ const OptionList: React.RefForwardingComponent<
283281
);
284282
};
285283

286-
const RefOptionList = React.forwardRef<ReviseRefOptionListProps, OptionListProps<DataNode[]>>(
287-
OptionList,
288-
);
284+
const RefOptionList =
285+
React.forwardRef<ReviseRefOptionListProps, OptionListProps<DataNode[]>>(OptionList);
289286
RefOptionList.displayName = 'OptionList';
290287

291288
export default RefOptionList;

0 commit comments

Comments
 (0)