커스텀 컴포넌트 등록 및 사용
이 문서에서는 Hops에서 커스텀 컴포넌트를 등록하고 페이지에서 실제로 사용하는 방법을 설명합니다.
커스텀 컴포넌트 관리화면 접근하기
커스텀 컴포넌트를 생성하고 관리하려면 먼저 커스텀 컴포넌트 관리 화면에 접근해야 합니다.
- 왼쪽 사이드바 메뉴에서 커스텀 컴포넌트 메뉴를 선택합니다.
새 커스텀 컴포넌트 생성하기
새로운 커스텀 컴포넌트를 생성하는 방법은 다음과 같습니다:
- 커스텀 컴포넌트 목록에서 오른쪽 상단의 [+] 버튼을 클릭합니다.
- 생성 옵션을 선택합니다:
- 빈 컴포넌트 추가: 빈 템플릿으로 시작
- 컴포넌트 템플릿 추가: 기본 샘플 코드가 포함된 템플릿으로 시작
- 선택 후 컴포넌트가 추가되며 에디터 화면으로 이동합니다.
커스텀 컴포넌트 에디터 사용하기
커스텀 컴포넌트 에디터는 크게 세 영역으로 구성되어 있습니다:
- 미리보기: 작성한 컴포넌트를 실시간으로 확인하는 영역
- 코드 에디터: React 컴포넌트 코드를 작성하는 영역
- 디버그 정보: 컴포넌트의 실행 결과, 로그를 표시하는 영역
컴포넌트 정보 설정하기
컴포넌트의 기본 정보를 설정합니다. 코드 에디터 영역에서 상단의 톱니바퀴 모양 아이콘을 누르면 확인할 수 있습니다:
- 표시 이름: 커스텀 컴포넌트 목록과 슬래시 컴포넌트 목록 등에서 표시되는 커스텀 컴포넌트의 이름
- 식별자: 컴포넌트의 고유 식별자 (영문, 숫자,
_
사용, 영문자로만 시작 가능) - 설명: 컴포넌트의 용도, 특징 및 사용 사례 (동료 개발자들의 이해를 돕기 위한 용도로 활용 가능)
- 기본 props: 컴포넌트에 전달되는 초기 속성값 (React 컴포넌트의 props로 전달)
기본 props 설정하기
기본 props 섹션에서 컴포넌트의 기본 프로퍼티 값을 설정할 수 있습니다:
{
"label": "이름",
"defaultValue": "김홉스"
}
이 설정은 페이지 에디터에서 컴포넌트를 처음 추가할 때 기본 props 프로퍼티의 기본 값으로 사용됩니다.
내장된 props 활용
모든 커스텀 컴포넌트에는 기본적으로 제공되는 프로퍼티들이 있습니다. 예를 들어 name
프로퍼티는 컴포넌트의 식별자로 사용되며, isHidden
프로퍼티를 통해 페이지에서 컴포넌트를 동적으로 숨기거나 표시할 수 있습니다.
커스텀 컴포넌트를 에디터에 추가할 때 설정할 수 있습니다.
코드 작성하기
에디터에서 React 기반의 코드를 작성합니다. 코드 작성 방법에 대한 자세한 내용은 커스텀 컴포넌트 작성하기 문서를 참조하세요.
기본 구조는 다음과 같습니다:
import { memo, ReactElement } from 'react';
import { CustomComponentRenderProps, useComponentState, useLogger } from '@hops/custom-component';
import { FormControl, FormLabel, Input } from '@hops/design-system';
// 컴포넌트 Props 타입 정의
interface OwnProps {
label: string;
defaultValue: string;
}
// 컴포넌트 구현
function Component(props: CustomComponentRenderProps<OwnProps>): ReactElement {
// 컴포넌트 프로퍼티 읽기
const { defaultValue, label } = props;
// 로거 사용
const logger = useLogger();
// 상태 관리
const [value, setValue] = useComponentState<string>('inputValue', defaultValue);
return (
<FormControl>
<FormLabel>{label}</FormLabel>
<Input
value={value}
onChange={(e) => {
setValue(e.target.value);
logger.debug(`onChange called: ${e.target.value}`);
}}
/>
</FormControl>
);
}
export default memo(Component);
테스트 props 설정하기
디버그 정보 영역에서 상단의 톱니바퀴 모양 아이콘을 누르면 테스트 props를 설정할 수 있습니다.
이 설정은 컴포넌트 에디터의 미리보기 섹션에서만 사용되며, 실제 페이지에는 적용되지 않습니다.
테스트 props 섹션에서는 미리보기에 사용될 프로퍼티 값을 JSON 형식으로 설정할 수 있습니다:
{
"label": "Test Label",
"defaultValue": "Test Value"
}
컴포넌트 저장 및 배포
작업을 완료한 후:
- 오른쪽 상단의 저장 버튼을 클릭하여 컴포넌트를 저장합니다. (작업 중 변경 사항은 자동 저장)
페이지 에디터에서 커스텀 컴포넌트 사용하기
저장한 커스텀 컴포넌트는 페이지 에디터에서 일반 컴포넌트와 동일하게 사용할 수 있습니다:
에디터에서 바로 사용
- 페이지 에디터에서
/
를 입력한 뒤 커스텀 컴포넌트의 표시이름과 식별자로 검색이 가능합니다. - 엔터 키를 누르면 입력한 커스텀 컴포넌트가 추가됩니다.
컴포넌트 목록에서 사용
- 좌측 사이드바에서 컴포넌트 버튼을 선택합니다.
- 컴포넌트 목록에서 맨 아래의 커스텀 컴포넌트 그룹을 찾습니다.
- 사용하려는 커스텀 컴포넌트를 드래그해 에디터에 놓습니다.
커스텀 컴포넌트 기본 Props 설정
페이지 에디터에서 커스텀 컴포넌트를 선택하면 오른쪽 프로퍼티 패널에서 기본 props를 설정할 수 있습니다:
- 코드를 입력해서 커스텀 컴포넌트에 props 전달 가능
- 컴포넌트 및 워크플로우 상태를 입력하여 동적인 값 사용 가능
커스텀 컴포넌트 상태 사용하기
커스텀 컴포넌트 구현 시 useComponentState
로 정의한 상태는 외부에서도 접근할 수 있습니다.
// 상태 관리
const [value, setValue] = useComponentState<string>('inputValue', defaultValue);
필요한 곳에서 컴포넌트_이름.상태_이름
형식의 접근자로 커스텀 컴포넌트의 상태에 접근합니다.
customComponent1.inputValue;
커스텀 컴포넌트 업데이트 및 관리
컴포넌트 업데이트
- 커스텀 컴포넌트 목록 화면에서 수정할 컴포넌트를 클릭합니다.
- 에디터에서 필요한 변경 사항을 적용합니다.
- 변경 사항은 자동으로 저장됩니다.
컴포넌트 복제
기존 컴포넌트를 기반으로 새 컴포넌트를 만들려면:
- 커스텀 컴포넌트 목록에서 복제할 컴포넌트의 옵션 메뉴(⋮)를 클릭합니다.
- 복제 옵션을 선택합니다.
- 새 이름과 제목을 입력하고 복제를 완료합니다.
컴포넌트 삭제
더 이상 사용하지 않는 컴포넌트를 삭제하려면:
- 커스텀 컴포넌트 목록에서 삭제할 컴포넌트의 옵션 메뉴(⋮)를 클릭합니다.
- 삭제 옵션을 선택합니다.
- 확인 대화 상자에서 확인을 클릭하여 삭제를 완료합니다.
컴포넌트를 삭제하면 해당 컴포넌트를 사용하는 모든 페이지에서 오류가 발생할 수 있습니다. 삭제 전에 해당 컴포넌트를 사용하는 페이지가 없는지 확인하세요.
커스텀 컴포넌트에 대해 더 자세히 알아보려면 다음 문서를 참조하세요: