Skip to content

Интеграция с React

Хуки для использования PipelineOrchestrator и createRestClient() в React. Импортируйте из rest-pipeline-js/react (реэкспортирует и базовую точку входа, так что достаточно одного импорта на оба случая).

jsx
import { useRef } from 'react'
import {
  PipelineOrchestrator,
  usePipelineProgressReact,
  usePipelineRunReact,
} from 'rest-pipeline-js/react'

const orchestrator = new PipelineOrchestrator({
  config: {
    stages: [/* ... */],
  },
})

export function PipelineComponent() {
  const progress = usePipelineProgressReact(orchestrator)
  const [run, { running, result, error, abort, pause, resume, rerunStep, clearStageResults }] =
    usePipelineRunReact(orchestrator)

  return (
    <div>
      <div>Current stage: {progress.currentStage}</div>
      <button onClick={() => run()} disabled={running}>
        Start
      </button>
      <button onClick={() => abort()} disabled={!running}>
        Abort
      </button>
      <button onClick={() => pause()}>Pause</button>
      <button onClick={() => resume()}>Resume</button>
      {result && <div>Done: {JSON.stringify(result)}</div>}
      {error && <div>Error: {error.message}</div>}
    </div>
  )
}

usePipelineRunReact(orchestrator)

Запуск пайплайна и отслеживание его статуса/результата.

Параметры

orchestrator: PipelineOrchestrator

Возвращает

[run, { running, result, error, stageResults, abort, pause, resume, rerunStep, clearStageResults }]

Кортеж, повторяющий соглашение [state, actions] хуков вроде useReducer. run/abort/pause/resume/rerunStep/clearStageResults стабильны (обёрнуты в useCallback) — их можно безопасно передавать напрямую как обработчики событий без лишних перерендеров.

usePipelineProgressReact(orchestrator)

Прогресс пайплайна как React-состояние.

Параметры

orchestrator: PipelineOrchestrator

Возвращает

PipelineProgress

usePipelineStageResultReact(orchestrator, stepKey)

Результат одного конкретного этапа — перерендер при каждом изменении stageResults, а не только один раз.

Параметры

  • orchestrator: PipelineOrchestrator
  • stepKey: string — ключ этапа для наблюдения

Возвращает

PipelineStepResult | null

usePipelineStepEventReact(orchestrator, stepKey, eventType)

Подписка на конкретное событие шага (success/error/progress).

Параметры

  • orchestrator: PipelineOrchestrator
  • stepKey: string
  • eventType: "success" | "error" | "progress"

Возвращает

any — последняя полезная нагрузка события.

usePipelineLogsReact(orchestrator)

Логи пайплайна как React-состояние.

Параметры

orchestrator: PipelineOrchestrator

Возвращает

log[]

useRerunPipelineStepReact(orchestrator)

Связанный rerunStep для одного оркестратора, удобно передавать напрямую как обработчик события.

Параметры

orchestrator: PipelineOrchestrator

Возвращает

(stepKey: string, options?) => Promise<...>orchestrator.rerunStep, привязанный к orchestrator.

useRestClientReact(config)

Мемоизированный RestClient — пересоздаётся при новой ссылке на объект config.

Параметры

config: HttpConfig — та же форма, что и у конфигурации createRestClient(). Мемоизируйте его сами (useMemo/useState/константа модуля), чтобы не пересоздавать на каждом рендере.

Возвращает

RestClient