Browse Source

hoc render flag 추가

master
김장현 7 months ago
parent
commit
6d741eb2f1
  1. 2
      src/containers/analysis/simulator/AnalysisSimulationContainer.js
  2. 24
      src/router/hoc/authenticationCheck.tsx
  3. 4
      src/views/analysis/history/AnalysisHistory.js
  4. 4
      src/views/analysis/simulation/AnalysisSimulation.js

2
src/containers/analysis/simulator/AnalysisSimulationContainer.js

@ -19,7 +19,7 @@ import { setLogout } from '@src/redux/features/account/auth/authThunk';
let playCount = 0; let playCount = 0;
let playCounts = 0; let playCounts = 0;
export const AnalysisSimulationContainer = props => { export const AnalysisSimulationContainer = ({ history }) => {
// 슬라이드 모든 데이터 // 슬라이드 모든 데이터
const { list, count, detail, searchParams, log, stcsList, stcsCount, page } = const { list, count, detail, searchParams, log, stcsList, stcsCount, page } =
useSelector(state => state.simulationState); useSelector(state => state.simulationState);

24
src/router/hoc/authenticationCheck.tsx

@ -1,4 +1,4 @@
import { ReactNode, useEffect, useLayoutEffect } from 'react'; import { ReactNode, useEffect, useLayoutEffect, useState } from 'react';
import { RouteComponentProps } from 'react-router-dom'; import { RouteComponentProps } from 'react-router-dom';
import { useSelector, useDispatch } from '@src/redux/store'; import { useSelector, useDispatch } from '@src/redux/store';
import { checkToken } from '@src/redux/features/account/auth/authThunk'; import { checkToken } from '@src/redux/features/account/auth/authThunk';
@ -16,15 +16,17 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
function AuthenticationCheck(props: RouteComponentProps) { function AuthenticationCheck(props: RouteComponentProps) {
const dispatch = useDispatch(); const dispatch = useDispatch();
const { user } = useSelector(state => state.authState); const { user } = useSelector(state => state.authState);
const [isRender, setIsRender] = useState<boolean>(false);
useLayoutEffect(() => { const Component: (props: IProps) => JSX.Element = SpecificComponent as (
const tokenVerification = async () => { props: IProps
) => JSX.Element;
useEffect(() => {
dispatch(checkToken() as any).then(({ payload: { result } }) => {
try { try {
// 로그인 해야만 접근 가능한 페이지인지 체크하는 옵션 // 로그인 해야만 접근 가능한 페이지인지 체크하는 옵션
const { authRoute } = option; const { authRoute } = option;
const {
payload: { result }
} = await dispatch(checkToken() as any);
if (!result) { if (!result) {
if (authRoute) { if (authRoute) {
@ -36,18 +38,14 @@ export default function (SpecificComponent: ReactNode, option: IOption) {
props.history.replace('/main/dashboard'); props.history.replace('/main/dashboard');
} }
} }
setIsRender(true);
} catch (error) { } catch (error) {
// props.history.replace('/account/login'); // props.history.replace('/account/login');
} }
}; });
tokenVerification();
}, []); }, []);
const Component: (props: IProps) => JSX.Element = SpecificComponent as (
props: IProps
) => JSX.Element;
return <Component {...props} user={user} />; return <>{isRender ? <Component {...props} user={user} /> : null}</>;
} }
return AuthenticationCheck; return AuthenticationCheck;
} }

4
src/views/analysis/history/AnalysisHistory.js

@ -3,10 +3,10 @@
import { AnalysisHistoryContainer } from '../../../containers/analysis/history/AnalysisHistoryContainer'; import { AnalysisHistoryContainer } from '../../../containers/analysis/history/AnalysisHistoryContainer';
const AnalysisHistory = () => { const AnalysisHistory = props => {
return ( return (
<div> <div>
<AnalysisHistoryContainer /> <AnalysisHistoryContainer {...props} />
</div> </div>
); );
}; };

4
src/views/analysis/simulation/AnalysisSimulation.js

@ -6,8 +6,8 @@ import '@styles/react/libs/tables/react-dataTable-component.scss';
import '../../../assets/css/custom.css'; import '../../../assets/css/custom.css';
import { AnalysisSimulationContainer } from '../../../containers/analysis/simulator/AnalysisSimulationContainer'; import { AnalysisSimulationContainer } from '../../../containers/analysis/simulator/AnalysisSimulationContainer';
const AnalysisSimulation = () => { const AnalysisSimulation = props => {
return <AnalysisSimulationContainer />; return <AnalysisSimulationContainer {...props} />;
}; };
export default AnalysisSimulation; export default AnalysisSimulation;

Loading…
Cancel
Save