Skip to content

Documentation / @finchart/react / usePlugin

Function: usePlugin()

usePlugin<TApi>(install, deps): TApi | null

Defined in: hooks/use-plugin.ts:27

무대에 플러그인을 얹고 수명을 React에 맡긴다 — 명령 차선의 관용구다.

<ChartPane> 안이면 그 pane, 밖이면 mainPane이 pane으로 온다. 어디에 얹을지는 소비자가 정한다 — plot.use(…)pane.use(…)도 이 문으로 들어온다:

tsx
const maximize = usePlugin((plot) => plot.use(paneMaximize({ gestures: true })), []);
const tools = usePlugin((plot, pane) => pane.use(drawingTools({ plot })), []);

재설치는 deps가 정한다 — 설치 함수의 참조가 아니다. 인라인 클로저를 그대로 줘도 된다. deps가 바뀌면 떼고 다시 얹으므로, 옵션만 갈고 싶은 플러그인(applyOptions가 있는 것)은 deps를 고정하고 돌려받은 api로 옵션을 넣는 편이 싸다 — <Crosshair>가 그 모양이다.

반환값은 커밋 전에는 null이다. 이벤트 핸들러에서 쓰는 것이 자연스럽고, 설치 직후가 필요한 초기화(tools.load(…) 같은 부수효과)는 설치 함수 안에서 한다 — 단 StrictMode는 설치·해제를 한 번 왕복시키므로(ADR-0029의 dispose 계약이 감당한다) 그 초기화는 두 번 돌아도 안전해야 한다.

Type Parameters

TApi

TApi extends object

Parameters

install

(plot, pane) => TApi

deps

readonly unknown[]

Returns

TApi | null