Skip to content

Commit 9de091c

Browse files
authored
Merge pull request #102 from l123wx/collapse_child_re_rendering
Optimize the rendering logic for the Collapse and Tabs child components(#101)
2 parents 792c760 + 2695e5b commit 9de091c

File tree

8 files changed

+27
-21
lines changed

8 files changed

+27
-21
lines changed

src/components/EditorSidePanel/Issues.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default function Issues() {
2727
}, [tables, relationships, issues, types]);
2828

2929
return (
30-
<Collapse style={{ width: "100%" }}>
30+
<Collapse keepDOM lazyRender style={{ width: "100%" }}>
3131
<Collapse.Panel
3232
header={
3333
<Badge

src/components/EditorSidePanel/NotesTab/NotesTab.jsx

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ export default function NotesTab() {
3333
) : (
3434
<Collapse
3535
activeKey={selectedElement.open ? `${selectedElement.id}` : ""}
36+
keepDOM
37+
lazyRender
3638
onChange={(activeKey) => {
3739
setSelectedElement((prev) => ({
3840
...prev,

src/components/EditorSidePanel/RelationshipsTab/RelationshipsTab.jsx

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export default function RelationshipsTab() {
1919
? `${selectedElement.id}`
2020
: ""
2121
}
22+
keepDOM
23+
lazyRender
2224
onChange={(k) =>
2325
setSelectedElement((prev) => ({
2426
...prev,

src/components/EditorSidePanel/SidePanel.jsx

+14-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Tabs } from "@douyinfe/semi-ui";
1+
import { Tabs, TabPane } from "@douyinfe/semi-ui";
22
import { Tab } from "../../data/constants";
33
import { useLayout, useSelect } from "../../hooks";
44
import RelationshipsTab from "./RelationshipsTab/RelationshipsTab";
@@ -13,19 +13,11 @@ export default function SidePanel({ width, resize, setResize }) {
1313
const { selectedElement, setSelectedElement } = useSelect();
1414

1515
const tabList = [
16-
{ tab: "Tables", itemKey: Tab.TABLES },
17-
{ tab: "Relationships", itemKey: Tab.RELATIONSHIPS },
18-
{ tab: "Subject Areas", itemKey: Tab.AREAS },
19-
{ tab: "Notes", itemKey: Tab.NOTES },
20-
{ tab: "Types", itemKey: Tab.TYPES },
21-
];
22-
23-
const contentList = [
24-
<TablesTab key="tables" />,
25-
<RelationshipsTab key="relationships" />,
26-
<AreasTab key="areas" />,
27-
<NotesTab key="notes" />,
28-
<TypesTab key="types" />,
16+
{ tab: "Tables", itemKey: Tab.TABLES, component: <TablesTab /> },
17+
{ tab: "Relationships", itemKey: Tab.RELATIONSHIPS, component: <RelationshipsTab /> },
18+
{ tab: "Subject Areas", itemKey: Tab.AREAS, component: <AreasTab /> },
19+
{ tab: "Notes", itemKey: Tab.NOTES, component: <NotesTab /> },
20+
{ tab: "Types", itemKey: Tab.TYPES, component: <TypesTab /> },
2921
];
3022

3123
return (
@@ -38,15 +30,19 @@ export default function SidePanel({ width, resize, setResize }) {
3830
<Tabs
3931
type="card"
4032
activeKey={selectedElement.currentTab}
41-
tabList={tabList}
33+
lazyRender
4234
onChange={(key) =>
4335
setSelectedElement((prev) => ({ ...prev, currentTab: key }))
4436
}
4537
collapsible
4638
>
47-
<div className="p-2">
48-
{contentList[parseInt(selectedElement.currentTab) - 1]}
49-
</div>
39+
{tabList.length && tabList.map(tab =>
40+
<TabPane tab={tab.tab} itemKey={tab.itemKey} key={tab.itemKey}>
41+
<div className="p-2">
42+
{tab.component}
43+
</div>
44+
</TabPane>
45+
)}
5046
</Tabs>
5147
</div>
5248
{layout.issues && (

src/components/EditorSidePanel/TablesTab/TableInfo.jsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ export default function TableInfo({ data }) {
144144
>
145145
<Collapse
146146
activeKey={indexActiveKey}
147+
keepDOM
148+
lazyRender
147149
onChange={(itemKey) => setIndexActiveKey(itemKey)}
148150
accordion
149151
>
@@ -169,7 +171,7 @@ export default function TableInfo({ data }) {
169171
style={{ marginTop: "12px", marginBottom: "12px" }}
170172
headerLine={false}
171173
>
172-
<Collapse>
174+
<Collapse keepDOM lazyRender>
173175
<Collapse.Panel header="Comment" itemKey="1">
174176
<TextArea
175177
field="comment"

src/components/EditorSidePanel/TablesTab/TablesTab.jsx

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export default function TablesTab() {
3131
? `${selectedElement.id}`
3232
: ""
3333
}
34+
keepDOM
35+
lazyRender
3436
onChange={(k) =>
3537
setSelectedElement((prev) => ({
3638
...prev,

src/components/EditorSidePanel/TypesTab/TypeInfo.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default function TypeInfo({ index, data }) {
6464
style={{ marginTop: "12px", marginBottom: "12px" }}
6565
headerLine={false}
6666
>
67-
<Collapse>
67+
<Collapse keepDOM lazyRender>
6868
<Collapse.Panel header="Comment" itemKey="1">
6969
<TextArea
7070
field="comment"

src/components/EditorSidePanel/TypesTab/TypesTab.jsx

+2
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ export default function TypesTab() {
6060
? `${selectedElement.id}`
6161
: ""
6262
}
63+
keepDOM
64+
lazyRender
6365
onChange={(id) =>
6466
setSelectedElement((prev) => ({
6567
...prev,

0 commit comments

Comments
 (0)