Skip to content

Commit

Permalink
Merge pull request #102 from l123wx/collapse_child_re_rendering
Browse files Browse the repository at this point in the history
Optimize the rendering logic for the Collapse and Tabs child components(#101)
  • Loading branch information
1ilit committed May 13, 2024
2 parents 792c760 + 2695e5b commit 9de091c
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 21 deletions.
2 changes: 1 addition & 1 deletion src/components/EditorSidePanel/Issues.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export default function Issues() {
}, [tables, relationships, issues, types]);

return (
<Collapse style={{ width: "100%" }}>
<Collapse keepDOM lazyRender style={{ width: "100%" }}>
<Collapse.Panel
header={
<Badge
Expand Down
2 changes: 2 additions & 0 deletions src/components/EditorSidePanel/NotesTab/NotesTab.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ export default function NotesTab() {
) : (
<Collapse
activeKey={selectedElement.open ? `${selectedElement.id}` : ""}
keepDOM
lazyRender
onChange={(activeKey) => {
setSelectedElement((prev) => ({
...prev,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ export default function RelationshipsTab() {
? `${selectedElement.id}`
: ""
}
keepDOM
lazyRender
onChange={(k) =>
setSelectedElement((prev) => ({
...prev,
Expand Down
32 changes: 14 additions & 18 deletions src/components/EditorSidePanel/SidePanel.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Tabs } from "@douyinfe/semi-ui";
import { Tabs, TabPane } from "@douyinfe/semi-ui";
import { Tab } from "../../data/constants";
import { useLayout, useSelect } from "../../hooks";
import RelationshipsTab from "./RelationshipsTab/RelationshipsTab";
Expand All @@ -13,19 +13,11 @@ export default function SidePanel({ width, resize, setResize }) {
const { selectedElement, setSelectedElement } = useSelect();

const tabList = [
{ tab: "Tables", itemKey: Tab.TABLES },
{ tab: "Relationships", itemKey: Tab.RELATIONSHIPS },
{ tab: "Subject Areas", itemKey: Tab.AREAS },
{ tab: "Notes", itemKey: Tab.NOTES },
{ tab: "Types", itemKey: Tab.TYPES },
];

const contentList = [
<TablesTab key="tables" />,
<RelationshipsTab key="relationships" />,
<AreasTab key="areas" />,
<NotesTab key="notes" />,
<TypesTab key="types" />,
{ tab: "Tables", itemKey: Tab.TABLES, component: <TablesTab /> },
{ tab: "Relationships", itemKey: Tab.RELATIONSHIPS, component: <RelationshipsTab /> },
{ tab: "Subject Areas", itemKey: Tab.AREAS, component: <AreasTab /> },
{ tab: "Notes", itemKey: Tab.NOTES, component: <NotesTab /> },
{ tab: "Types", itemKey: Tab.TYPES, component: <TypesTab /> },
];

return (
Expand All @@ -38,15 +30,19 @@ export default function SidePanel({ width, resize, setResize }) {
<Tabs
type="card"
activeKey={selectedElement.currentTab}
tabList={tabList}
lazyRender
onChange={(key) =>
setSelectedElement((prev) => ({ ...prev, currentTab: key }))
}
collapsible
>
<div className="p-2">
{contentList[parseInt(selectedElement.currentTab) - 1]}
</div>
{tabList.length && tabList.map(tab =>
<TabPane tab={tab.tab} itemKey={tab.itemKey} key={tab.itemKey}>
<div className="p-2">
{tab.component}
</div>
</TabPane>
)}
</Tabs>
</div>
{layout.issues && (
Expand Down
4 changes: 3 additions & 1 deletion src/components/EditorSidePanel/TablesTab/TableInfo.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ export default function TableInfo({ data }) {
>
<Collapse
activeKey={indexActiveKey}
keepDOM
lazyRender
onChange={(itemKey) => setIndexActiveKey(itemKey)}
accordion
>
Expand All @@ -169,7 +171,7 @@ export default function TableInfo({ data }) {
style={{ marginTop: "12px", marginBottom: "12px" }}
headerLine={false}
>
<Collapse>
<Collapse keepDOM lazyRender>
<Collapse.Panel header="Comment" itemKey="1">
<TextArea
field="comment"
Expand Down
2 changes: 2 additions & 0 deletions src/components/EditorSidePanel/TablesTab/TablesTab.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ export default function TablesTab() {
? `${selectedElement.id}`
: ""
}
keepDOM
lazyRender
onChange={(k) =>
setSelectedElement((prev) => ({
...prev,
Expand Down
2 changes: 1 addition & 1 deletion src/components/EditorSidePanel/TypesTab/TypeInfo.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export default function TypeInfo({ index, data }) {
style={{ marginTop: "12px", marginBottom: "12px" }}
headerLine={false}
>
<Collapse>
<Collapse keepDOM lazyRender>
<Collapse.Panel header="Comment" itemKey="1">
<TextArea
field="comment"
Expand Down
2 changes: 2 additions & 0 deletions src/components/EditorSidePanel/TypesTab/TypesTab.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ export default function TypesTab() {
? `${selectedElement.id}`
: ""
}
keepDOM
lazyRender
onChange={(id) =>
setSelectedElement((prev) => ({
...prev,
Expand Down

0 comments on commit 9de091c

Please sign in to comment.