Browse Source

fix: 添加sessionStorage全局管理

pull/43/head
cp3hnu 1 year ago
parent
commit
6d569b9ccd
5 changed files with 35 additions and 10 deletions
  1. +1
    -1
      react-ui/src/hooks/pageCacheState.ts
  2. +2
    -5
      react-ui/src/pages/Mirror/create.tsx
  3. +2
    -2
      react-ui/src/pages/Mirror/info.tsx
  4. +0
    -2
      react-ui/src/utils/sessionKeys.ts
  5. +30
    -0
      react-ui/src/utils/sessionStorage.ts

+ 1
- 1
react-ui/src/hooks/pageCacheState.ts View File

@@ -44,7 +44,7 @@ export const useCacheState = () => {
const key = 'pagecache:' + pathname;

const setCacheState = useCallback(
(state: any) => {
(state?: any) => {
if (state) {
pageKeys.push(key);
sessionStorage.setItem(key, JSON.stringify(state));


+ 2
- 5
react-ui/src/pages/Mirror/create.tsx View File

@@ -11,7 +11,7 @@ import SubAreaTitle from '@/components/SubAreaTitle';
import { CommonTabKeys } from '@/enums';
import { createMirrorReq } from '@/services/mirror';
import { to } from '@/utils/promise';
import { mirrorNameKey } from '@/utils/sessionKeys';
import { getSessionItemThenRemove, mirrorNameKey } from '@/utils/sessionStorage';
import { getFileListFromEvent } from '@/utils/ui';
import { useNavigate } from '@umijs/max';
import { Button, Col, Form, Input, Row, Upload, UploadFile, message, type UploadProps } from 'antd';
@@ -56,14 +56,11 @@ function MirrorCreate() {
};

useEffect(() => {
const name = sessionStorage.getItem(mirrorNameKey);
const name = getSessionItemThenRemove(mirrorNameKey);
if (name) {
form.setFieldValue('name', name);
setNameDisabled(true);
}
return () => {
sessionStorage.removeItem(mirrorNameKey);
};
}, []);

// 创建公网、本地镜像


+ 2
- 2
react-ui/src/pages/Mirror/info.tsx View File

@@ -17,7 +17,7 @@ import {
} from '@/services/mirror';
import themes from '@/styles/theme.less';
import { to } from '@/utils/promise';
import { mirrorNameKey } from '@/utils/sessionKeys';
import { mirrorNameKey, setSessionStorageItem } from '@/utils/sessionStorage';
import { modalConfirm } from '@/utils/ui';
import { useNavigate, useParams, useSearchParams } from '@umijs/max';
import {
@@ -149,7 +149,7 @@ function MirrorInfo() {

const createMirrorVersion = () => {
navigate(`/dataset/mirror/create`);
sessionStorage.setItem(mirrorNameKey, mirrorInfo.name || '');
setSessionStorageItem(mirrorNameKey, mirrorInfo.name || '');
setCacheState({
pagination,
});


+ 0
- 2
react-ui/src/utils/sessionKeys.ts View File

@@ -1,2 +0,0 @@
// 用于新建镜像
export const mirrorNameKey = 'mirror-name';

+ 30
- 0
react-ui/src/utils/sessionStorage.ts View File

@@ -0,0 +1,30 @@
// 用于新建镜像
export const mirrorNameKey = 'mirror-name';

export const getSessionStorageItem = (key: string, isObject: boolean = false) => {
const jsonStr = sessionStorage.getItem(key);
if (!isObject) {
return jsonStr;
}
if (jsonStr) {
try {
return JSON.parse(jsonStr);
} catch (error) {
return undefined;
}
}
return undefined;
};

export const setSessionStorageItem = (key: string, state?: any, isObject: boolean = false) => {
if (state) {
sessionStorage.setItem(key, isObject ? JSON.stringify(state) : state);
}
};

// 获取之后就删除,多用于上一个页面传递数据到下一个页面
export const getSessionItemThenRemove = (key: string, isObject: boolean = false) => {
const res = getSessionStorageItem(key, isObject);
sessionStorage.removeItem(key);
return res;
};

Loading…
Cancel
Save