From bf8f915b1507dd016a1e0c123d1e9480be0f179b Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Thu, 30 Nov 2023 12:05:27 +0800 Subject: [PATCH] Optimize load data --- src/pages/system/Group.tsx | 13 ++++++++----- src/pages/system/Log.tsx | 3 ++- src/pages/system/Role.tsx | 13 ++++++++----- src/pages/system/User.tsx | 19 ++++++++++++++----- src/utils/hooks.tsx | 16 ++++++++++++++++ 5 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 src/utils/hooks.tsx diff --git a/src/pages/system/Group.tsx b/src/pages/system/Group.tsx index fb8536e..2563fed 100644 --- a/src/pages/system/Group.tsx +++ b/src/pages/system/Group.tsx @@ -11,6 +11,7 @@ import { DATABASE_UPDATE_SUCCESS } from '@/constants/common.constants' import { utcToLocalTime } from '@/utils/common' +import { useUpdatedEffect } from '@/utils/hooks' import { r_sys_group_add, r_sys_group_change_status, @@ -174,6 +175,9 @@ const Group: React.FC = () => { form.setFieldValue('name', newFormValues?.name) form.setFieldValue('roleIds', newFormValues?.roleIds) form.setFieldValue('enable', newFormValues?.enable ?? true) + if (!roleData || !roleData.length) { + getRoleData() + } } const handleOnListDeleteBtnClick = () => { @@ -220,6 +224,9 @@ const Group: React.FC = () => { value.roles.map((role) => role.id) ) form.setFieldValue('enable', value.enable) + if (!roleData || !roleData.length) { + getRoleData() + } void form.validateFields() } } @@ -469,11 +476,7 @@ const Group: React.FC = () => { } }, [formValues]) - useEffect(() => { - getRoleData() - }, []) - - useEffect(() => { + useUpdatedEffect(() => { getGroup() }, [ JSON.stringify(tableParams.filters), diff --git a/src/pages/system/Log.tsx b/src/pages/system/Log.tsx index d16fe8c..e530c95 100644 --- a/src/pages/system/Log.tsx +++ b/src/pages/system/Log.tsx @@ -6,6 +6,7 @@ import { DATABASE_SELECT_SUCCESS } from '@/constants/common.constants' import { dayjsToUtc, utcToLocalTime } from '@/utils/common' +import { useUpdatedEffect } from '@/utils/hooks' import { r_sys_log_get } from '@/services/system' import FitFullScreen from '@/components/common/FitFullScreen' import Card from '@/components/common/Card' @@ -256,7 +257,7 @@ const Log: React.FC = () => { }) } - useEffect(() => { + useUpdatedEffect(() => { getLog() }, [ JSON.stringify(tableParams.filters), diff --git a/src/pages/system/Role.tsx b/src/pages/system/Role.tsx index 8594664..652f9cf 100644 --- a/src/pages/system/Role.tsx +++ b/src/pages/system/Role.tsx @@ -11,6 +11,7 @@ import { DATABASE_UPDATE_SUCCESS } from '@/constants/common.constants' import { utcToLocalTime, powerListToPowerTree } from '@/utils/common' +import { useUpdatedEffect } from '@/utils/hooks' import { r_sys_role_add, r_sys_role_change_status, @@ -166,6 +167,9 @@ const Role: React.FC = () => { form.setFieldValue('name', newFormValues?.name) form.setFieldValue('powerIds', newFormValues?.powerIds) form.setFieldValue('enable', newFormValues?.enable ?? true) + if (!powerTreeData || !powerTreeData.length) { + getPowerTreeData() + } } const handleOnListDeleteBtnClick = () => { @@ -212,6 +216,9 @@ const Role: React.FC = () => { value.operations.map((operation) => operation.id) ) form.setFieldValue('enable', value.enable) + if (!powerTreeData || !powerTreeData.length) { + getPowerTreeData() + } void form.validateFields() } } @@ -478,11 +485,7 @@ const Role: React.FC = () => { } }, [formValues]) - useEffect(() => { - getPowerTreeData() - }, []) - - useEffect(() => { + useUpdatedEffect(() => { getRole() }, [ JSON.stringify(tableParams.filters), diff --git a/src/pages/system/User.tsx b/src/pages/system/User.tsx index a8df683..ebc6a69 100644 --- a/src/pages/system/User.tsx +++ b/src/pages/system/User.tsx @@ -12,6 +12,7 @@ import { DATABASE_UPDATE_SUCCESS } from '@/constants/common.constants' import { utcToLocalTime, isPastTime, localTimeToUtc, dayjsToUtc, getNowUtc } from '@/utils/common' +import { useUpdatedEffect } from '@/utils/hooks' import { r_sys_group_get_list, r_sys_role_get_list, @@ -259,6 +260,12 @@ const User: React.FC = () => { form.setFieldValue('roleIds', newFormValues?.roleIds) form.setFieldValue('groupIds', newFormValues?.groupIds) + if (!roleData || !roleData.length) { + getRoleData() + } + if (!groupData || !groupData.length) { + getGroupData() + } getAvatar() } @@ -429,6 +436,12 @@ const User: React.FC = () => { 'groupIds', value.groups.map((group) => group.id) ) + if (!roleData || !roleData.length) { + getRoleData() + } + if (!groupData || !groupData.length) { + getGroupData() + } void form.validateFields() } } @@ -718,11 +731,7 @@ const User: React.FC = () => { } }, [formValues]) - useEffect(() => { - handleOnDrawerRefresh() - }, []) - - useEffect(() => { + useUpdatedEffect(() => { getUser() }, [ JSON.stringify(tableParams.filters), diff --git a/src/utils/hooks.tsx b/src/utils/hooks.tsx new file mode 100644 index 0000000..da151a4 --- /dev/null +++ b/src/utils/hooks.tsx @@ -0,0 +1,16 @@ +import React from 'react' + +export const useUpdatedEffect = ( + effect: React.EffectCallback, + dependencies: React.DependencyList +) => { + const isFirstRender = useRef(true) + + useEffect(() => { + if (isFirstRender.current) { + isFirstRender.current = false + } else { + effect() + } + }, dependencies) +}