Skip to content

Commit

Permalink
fix(comp): fix the memory overflow problem of component containing ke…
Browse files Browse the repository at this point in the history
…ywords
  • Loading branch information
anncwb committed Dec 11, 2020
1 parent 0434030 commit 6b3195b
Show file tree
Hide file tree
Showing 33 changed files with 155 additions and 90 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

- 移除左侧菜单搜索,新增顶部菜单搜索功能

### ⚡ Performance Improvements

- 异步引入组件

### 🎫 Chores

- 返回顶部样式调整,避免遮住其他元素
Expand All @@ -14,6 +18,9 @@
- 修复多级路由缓存导致组件渲染多次的问题
- 修复地图图表切换后消失问题
- 修复登录成功 notify 消失问题
- 修改 `VirtualScroll``ImportExcel`组件名为`VScroll``ImpExcel`,暂时解决含有关键字的组件在 vue 模版内使用内存溢出
- 修复 axios 大小写问题
- 修复按钮样式问题

## 2.0.0-rc.13 (2020-12-10)

Expand Down
8 changes: 6 additions & 2 deletions src/components/Application/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { withInstall } from '../util';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const AppLocalePicker = createAsyncComponent(() => import('./src/AppLocalePicker.vue'));
export const AppLocalePicker = createAsyncComponent(() => import('./src/AppLocalePicker.vue'), {
loading: true,
});
export const AppProvider = createAsyncComponent(() => import('./src/AppProvider.vue'));
export const AppSearch = createAsyncComponent(() => import('./src/search/AppSearch.vue'));
export const AppSearch = createAsyncComponent(() => import('./src/search/AppSearch.vue'), {
loading: true,
});
export const AppLogo = createAsyncComponent(() => import('./src/AppLogo.vue'));

withInstall(AppLocalePicker, AppLogo, AppProvider, AppSearch);
Expand Down
8 changes: 3 additions & 5 deletions src/components/Button/src/BasicButton.vue
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<template>
<Button v-bind="getBindValue" :class="[getColor, $attrs.class]">
<template #default="data">
<Icon :icon="preIcon" :class="{ 'mr-1': !getIsCircleBtn }" v-if="preIcon" />
<Icon :icon="preIcon" v-if="preIcon" :size="14" />
<slot v-bind="data" />
<Icon :icon="postIcon" :class="{ 'ml-1': !getIsCircleBtn }" v-if="postIcon" />
<Icon :icon="postIcon" v-if="postIcon" :size="14" />
</template>
</Button>
</template>
Expand All @@ -27,8 +27,6 @@
postIcon: propTypes.string,
},
setup(props, { attrs }) {
const getIsCircleBtn = computed(() => attrs.shape === 'circle');
const getColor = computed(() => {
const { color, disabled } = props;
return {
Expand All @@ -41,7 +39,7 @@
return { ...attrs, ...props };
});
return { getBindValue, getColor, getIsCircleBtn };
return { getBindValue, getColor };
},
});
</script>
12 changes: 7 additions & 5 deletions src/components/Container/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import ScrollContainer from './src/ScrollContainer.vue';
import CollapseContainer from './src/collapse/CollapseContainer.vue';
import LazyContainer from './src/LazyContainer.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const ScrollContainer = createAsyncComponent(() => import('./src/ScrollContainer.vue'));
export const CollapseContainer = createAsyncComponent(
() => import('./src/collapse/CollapseContainer.vue')
);
export const LazyContainer = createAsyncComponent(() => import('./src/LazyContainer.vue'));

withInstall(ScrollContainer, CollapseContainer, LazyContainer);

export * from './src/types';

export { ScrollContainer, CollapseContainer, LazyContainer };
5 changes: 3 additions & 2 deletions src/components/CountTo/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Transform vue-count-to to support vue3 version

import CountTo from './src/index.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const CountTo = createAsyncComponent(() => import('./src/index.vue'));

withInstall(CountTo);
export { CountTo };
6 changes: 3 additions & 3 deletions src/components/Description/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Description from './src/index';

import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const Description = createAsyncComponent(() => import('./src/index'));

withInstall(Description);

export * from './src/types';
export { useDescription } from './src/useDescription';
export { Description };
5 changes: 3 additions & 2 deletions src/components/Drawer/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import BasicDrawer from './src/BasicDrawer';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const BasicDrawer = createAsyncComponent(() => import('./src/BasicDrawer'));

withInstall(BasicDrawer);
export * from './src/types';
export { useDrawer, useDrawerInner } from './src/useDrawer';
export { BasicDrawer };
6 changes: 3 additions & 3 deletions src/components/Dropdown/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Dropdown from './src/Dropdown';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const Dropdown = createAsyncComponent(() => import('./src/Dropdown'));

withInstall(Dropdown);
export * from './src/types';

export { Dropdown };
10 changes: 5 additions & 5 deletions src/components/Excel/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import ImportExcel from './src/ImportExcel.vue';
import ExportExcelModel from './src/ExportExcelModel.vue';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

import { withInstall } from '../util';

withInstall(ImportExcel, ExportExcelModel);
export const ImpExcel = createAsyncComponent(() => import('./src/ImportExcel.vue'));
export const ExpExcelModel = createAsyncComponent(() => import('./src/ExportExcelModel.vue'));

withInstall(ImpExcel, ExpExcelModel);

export * from './src/types';

export { jsonToSheetXlsx, aoaToSheetXlsx } from './src/Export2Excel';

export { ImportExcel, ExportExcelModel };
10 changes: 9 additions & 1 deletion src/components/Icon/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import './index.less';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

import type { PropType } from 'vue';
import {
defineComponent,
Expand All @@ -14,7 +16,7 @@ import {
import Iconify from '@purge-icons/generated';
import { isString } from '/@/utils/is';
import { propTypes } from '/@/utils/propTypes';
export default defineComponent({
const Icon = defineComponent({
name: 'GIcon',
props: {
// icon name
Expand Down Expand Up @@ -81,3 +83,9 @@ export default defineComponent({
);
},
});

export default createAsyncComponent(() => {
return new Promise((resolve) => {
resolve(Icon);
});
});
6 changes: 3 additions & 3 deletions src/components/Loading/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import './src/indicator';
import Loading from './src/index.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const Loading = createAsyncComponent(() => import('./src/index.vue'));

withInstall(Loading);
export { useLoading } from './src/useLoading';
export { createLoading } from './src/createLoading';

export { Loading };
7 changes: 3 additions & 4 deletions src/components/Markdown/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import MarkDown from './src/index.vue';

import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const MarkDown = createAsyncComponent(() => import('./src/index.vue'));

withInstall(MarkDown);

export * from './src/types';

export { MarkDown };
6 changes: 4 additions & 2 deletions src/components/Menu/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import BasicMenu from './src/BasicMenu';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const BasicMenu = createAsyncComponent(() => import('./src/BasicMenu'), { loading: false });

withInstall(BasicMenu);
export { BasicMenu };
5 changes: 3 additions & 2 deletions src/components/Modal/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import './src/index.less';
import BasicModal from './src/BasicModal';
import { withInstall } from '../util';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const BasicModal = createAsyncComponent(() => import('./src/BasicModal'));

withInstall(BasicModal);

export { useModalContext } from './src/useModalContext';
export { useModal, useModalInner } from './src/useModal';
export * from './src/types';
export { BasicModal };
5 changes: 3 additions & 2 deletions src/components/Page/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import PageFooter from './src/PageFooter.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const PageFooter = createAsyncComponent(() => import('./src/PageFooter.vue'));

withInstall(PageFooter);
export { PageFooter };
7 changes: 6 additions & 1 deletion src/components/Qrcode/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
export { default as QrCode } from './src/index.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const QrCode = createAsyncComponent(() => import('./src/index.vue'));

withInstall(QrCode);
export * from './src/types';
5 changes: 3 additions & 2 deletions src/components/Scrollbar/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
* copy from element-ui
*/

import Scrollbar from './src/Scrollbar';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const Scrollbar = createAsyncComponent(() => import('./src/Scrollbar'));

withInstall(Scrollbar);

export { Scrollbar };
export type { ScrollbarType } from './src/types';
6 changes: 4 additions & 2 deletions src/components/StrengthMeter/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import StrengthMeter from './src/index';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const StrengthMeter = createAsyncComponent(() => import('./src/index'));

withInstall(StrengthMeter);
export { StrengthMeter };
5 changes: 3 additions & 2 deletions src/components/Tinymce/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Tinymce from './src/Editor.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const Tinymce = createAsyncComponent(() => import('./src/Editor.vue'));

withInstall(Tinymce);
export { Tinymce };
3 changes: 2 additions & 1 deletion src/components/Transition/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { createSimpleTransition, createJavascriptTransition } from './src/CreateTransition';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

import ExpandTransitionGenerator from './src/ExpandTransition';

Expand Down Expand Up @@ -28,4 +29,4 @@ export const ExpandXTransition = createJavascriptTransition(
ExpandTransitionGenerator('', true)
);

export { default as ExpandTransition } from './src/ExpandTransition.vue';
export const ExpandTransition = createAsyncComponent(() => import('./src/ExpandTransition.vue'));
10 changes: 8 additions & 2 deletions src/components/Tree/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
export { default as BasicTree } from './src/BasicTree';
export * from './src/types';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import { withInstall } from '../util';

export const BasicTree = createAsyncComponent(() => import('./src/BasicTree'));

withInstall(BasicTree);

export type { ContextMenuItem } from '/@/hooks/web/useContextMenu';
export * from './src/types';
5 changes: 3 additions & 2 deletions src/components/Upload/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import BasicUpload from './src/BasicUpload.vue';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
export const BasicUpload = createAsyncComponent(() => import('./src/BasicUpload.vue'));

withInstall(BasicUpload);
export { BasicUpload };
9 changes: 5 additions & 4 deletions src/components/Verify/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import BasicDragVerify from './src/DragVerify';
import RotateDragVerify from './src/ImgRotate';
import { withInstall } from '../util';

import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const BasicDragVerify = createAsyncComponent(() => import('./src/DragVerify'));
export const RotateDragVerify = createAsyncComponent(() => import('./src/ImgRotate'));

withInstall(BasicDragVerify, RotateDragVerify);

export * from './src/types';

export { BasicDragVerify, RotateDragVerify };
8 changes: 5 additions & 3 deletions src/components/VirtualScroll/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import VirtualScroll from './src/index';
import { withInstall } from '../util';

withInstall(VirtualScroll);
export { VirtualScroll };
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';

export const VScroll = createAsyncComponent(() => import('./src/index'));

withInstall(VScroll);
3 changes: 3 additions & 0 deletions src/design/ant/btn.less
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
// button重置
.ant-btn {
display: inline-flex;
justify-content: center;
align-items: center;
// &.ant-btn-success:not(.ant-btn-link),
// &.ant-btn-error:not(.ant-btn-link),
// &.ant-btn-warning:not(.ant-btn-link),
Expand Down
7 changes: 4 additions & 3 deletions src/layouts/page/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,17 @@ export default defineComponent({
renderComp()
);

return unref(getEnableTransition) ? (
if (!unref(getEnableTransition)) {
return PageContent;
}
return (
<Transition
name={name || route.meta.transitionName || unref(getBasicTransition)}
mode="out-in"
appear={true}
>
{() => PageContent}
</Transition>
) : (
PageContent
);
},
}}
Expand Down
Loading

0 comments on commit 6b3195b

Please sign in to comment.