logologo
시작
가이드
개발
플러그인
API
홈
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
시작
가이드
개발
플러그인
API
홈
logologo

소개

FlowEngine이란?
FlowEngine과 플러그인의 관계
빠른 시작
학습 로드맵

가이드

FlowModel 등록
FlowModel 생성
FlowModel 렌더링
FlowModel 이벤트 플로우 & 구성
FlowModel 영속성
FlowModel 생명주기
FlowModel 컨텍스트 시스템
반응형 메커니즘: Observable
FlowModel vs React.Component
RunJS 플러그인 확장 포인트

Definitions

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageFlowModel 렌더링
Next PageFlowModel 영속성
TIP

이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요

#FlowModel 이벤트 플로우 및 설정

FlowModel은 '이벤트 플로우(Flow)' 기반의 접근 방식을 제공하여 컴포넌트의 설정 로직을 구현합니다. 이를 통해 컴포넌트의 동작과 설정을 더욱 확장 가능하고 시각적으로 관리할 수 있습니다.

#사용자 정의 모델

FlowModel을 상속받아 사용자 정의 컴포넌트 모델을 생성할 수 있습니다. 모델은 컴포넌트의 렌더링 로직을 정의하기 위해 render() 메서드를 구현해야 합니다.

class MyModel extends FlowModel {
  render() {
    return <Button {...this.props} />;
  }
}

#플로우(Flow) 등록

각 모델은 컴포넌트의 설정 로직과 상호작용 단계를 설명하기 위해 하나 이상의 **플로우(Flow)**를 등록할 수 있습니다.

MyModel.registerFlow({
  key: 'buttonSettings',
  title: '버튼 설정',
  steps: {
    general: {
      title: '일반 설정',
      uiSchema: {
        title: {
          type: 'string',
          title: '버튼 제목',
          'x-decorator': 'FormItem',
          'x-component': 'Input',
        },
      },
      defaultParams: {
        type: 'primary',
      },
      handler(ctx, params) {
        ctx.model.setProps('children', params.title);
        ctx.model.setProps('type', params.type);
      },
    },
  },
});

설명

  • key: 플로우의 고유 식별자입니다.
  • title: UI 표시에 사용되는 플로우의 이름입니다.
  • steps: 설정 단계(Step)를 정의합니다. 각 단계는 다음을 포함합니다:
    • title: 단계 제목입니다.
    • uiSchema: 설정 폼 구조입니다 (Formily Schema와 호환됩니다).
    • defaultParams: 기본 매개변수입니다.
    • handler(ctx, params): 저장 시 트리거되며, 모델 상태를 업데이트하는 데 사용됩니다.

#모델 렌더링

컴포넌트 모델을 렌더링할 때, showFlowSettings 매개변수를 사용하여 설정 기능을 활성화할지 여부를 제어할 수 있습니다. showFlowSettings가 활성화되면, 컴포넌트 우측 상단에 설정 진입점(예: 설정 아이콘 또는 버튼)이 자동으로 표시됩니다.

<FlowModelRenderer model={model} showFlowSettings />

#openFlowSettings를 사용하여 설정 폼 수동으로 열기

내장된 상호작용 진입점을 통해 설정 폼을 여는 것 외에도, 코드에서 openFlowSettings()를 수동으로 호출할 수 있습니다.

flowSettings.open(options: FlowSettingsOpenOptions): Promise<boolean>;
model.openFlowSettings(options?: Omit<FlowSettingsOpenOptions, 'model'>): Promise<boolean>;

#매개변수 정의

interface FlowSettingsOpenOptions {
  model: FlowModel;               // 필수, 해당 모델 인스턴스
  preset?: boolean;               // `preset=true`로 표시된 단계만 렌더링합니다 (기본값은 `false`).
  flowKey?: string;               // 단일 플로우를 지정합니다.
  flowKeys?: string[];            // 여러 플로우를 지정합니다 (`flowKey`가 함께 제공되면 무시됩니다).
  stepKey?: string;               // 단일 단계를 지정합니다 (일반적으로 `flowKey`와 함께 사용됩니다).
  uiMode?: 'dialog' | 'drawer';   // 폼 표시 컨테이너이며, 기본값은 `'dialog'`입니다.
  onCancel?: () => void;          // 취소 버튼 클릭 시 호출되는 콜백 함수입니다.
  onSaved?: () => void;           // 설정이 성공적으로 저장된 후 호출되는 콜백 함수입니다.
}

#예시: Drawer 모드로 특정 플로우의 설정 폼 열기

await model.openFlowSettings({
  flowKey: 'buttonSettings',
  uiMode: 'drawer',
  onSaved: () => {
    console.log('버튼 설정이 저장되었습니다');
  },
});