Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 인터페이스
- 다형성
- 대덕인재개발원
- 어윈 사용법
- 자동차수리시스템
- 제네릭
- 생성자오버로드
- cursor문
- NestedFor
- GRANT VIEW
- 환경설정
- oracle
- 한국건설관리시스템
- 정수형타입
- Java
- 객체 비교
- 추상메서드
- 오라클
- 예외미루기
- 자바
- abstract
- exception
- 참조형변수
- 컬렉션프레임워크
- 집합_SET
- 예외처리
- 사용자예외클래스생성
- EnhancedFor
- 컬렉션 타입
- 메소드오버로딩
Archives
- Today
- Total
거니의 velog
React > 유용한 커스텀 훅 본문
1. useConsolelog
import { useEffect } from 'react';
// 커스텀 훅 정의
function useConsoleLog(label, value) {
useEffect(() => {
console.log(`${label} : `, value);
}, [label, value]);
}
export default useConsoleLog;
2. useCommonCodeList
import { useState, useEffect } from 'react';
import { getCommonCodeListInfo, tokenGetCommonCodeListInfo } from '../api/adminApi';
import fetchData from '../utils/fetchData';
import useAxiosWithAuth from 'hooks/useAxiosWithAuth';
// 공통 코드 리스트를 불러와 라디오, 셀렉트 옵션으로 변환하는 커스텀 훅
const useCommonCodeList = (groupCode) => {
const axiosInstance = useAxiosWithAuth();
const loginUser = '100';
const [commonCodeListData, setCommonCodeListData] = useState([]);
// 공통코드 리스트를 불러오는 함수
const fetchCommonCodeList = async () => {
const postData = { searchComGroupCd: groupCode };
//await fetchData(getCommonCodeListInfo, setCommonCodeListData, postData);
try {
const data = await tokenGetCommonCodeListInfo(axiosInstance, postData);
setCommonCodeListData(data);
} catch (error) {
console.error('Error fetching data: ', error);
}
};
useEffect(() => {
fetchCommonCodeList();
}, []);
// 공통 코드 리스트 데이터
const commonCodeResultData = commonCodeListData?.resultData?.cmmnCdList;
////////////////////////////////////////
// 라디오 옵션 변환
const commonCodeRadioOptionFn = () => {
const options = commonCodeResultData?.map(code => ({
value: code.comCd,
title: code.cdNm
}));
let commonCodeRadioOption = options;
return commonCodeRadioOption;
};
////////////////////////////////////////
// 셀렉트 옵션 변환
const commonCodeSelectOptionFn = () => {
const options = commonCodeResultData?.map(code => ({
id: code.comCd,
name: code.cdNm
}));
let commonCodeSelectOption = options;
return commonCodeSelectOption;
};
return {
commonCodeResultData,
commonCodeRadioOptionFn,
commonCodeSelectOptionFn
};
};
export default useCommonCodeList;
3. useNavigateWithQuery
import { useMemo } from 'react';
const useNavigateWithQuery = (path, queryParams) => {
// useMemo를 사용하여 쿼리 스트링이 변경될 때만 새로운 URL을 계산합니다.
const finalUrl = useMemo(() => {
const newQueryString = Object.entries(queryParams)
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join('&');
return `${path}?${newQueryString}`;
}, [path, queryParams]);
return finalUrl;
};
export default useNavigateWithQuery;
4. JsonDataShowTemp
import React from 'react';
const JsonDataShowTemp = ({ data }) => {
return (
<pre>{JSON.stringify(data, null, 2)}</pre>
);
};
export default JsonDataShowTemp;
5. stringifyJSON
// 응답 확인용 메서드
export const stringifyJSON = (obj, indent = 2) => {
return JSON.stringify(obj, null, indent);
}
'etc 이슈' 카테고리의 다른 글
CSS 스크롤바 숨기기 (0) | 2024.03.21 |
---|---|
CSS Flex 속성 (0) | 2024.03.18 |
깃 배쉬 사용법 (0) | 2024.03.18 |
(1) 네트워크 이론 1 (0) | 2023.10.30 |
[MySQL5.7] 한글깨짐 character set UTF8 설정하기 (0) | 2023.08.01 |