SNA

React provider と context

SnaProvider、SnaSession、useSnaContext の props と返り値。

React provider と context

<SnaProvider>

<SnaProvider connection?: SnaConnection snaUrl?: string authToken?: string sessionId?: string hydrate?: boolean>
  {children}
</SnaProvider>
PropTypeDefaultDescription
childrenReact.ReactNoderequiredSNA context を受け取る subtree です。
connection{ baseUrl: string; authToken?: string }noneSDK launcher が返す connection object です。保護された embedded SNA では token と URL を一緒に保つため、これを優先します。
snaUrlstringauto-discoverySNA internal API server URL です。省略すると host app の /api/sna-port を先に読み、失敗した場合は http://localhost:3099 を使います。
authTokenstringnoneCustom deployment 用の token override です。SDK が server を起動していない保護サーバーでは snaUrl と一緒に使います。
sessionIdstringdefaultdescendants の default session ID です。
hydratebooleantruemount 時に chat store が保存済み sessions と messages を取得するかを制御します。chat store を使わない app では false にできます。

SnaProvider は UI を render しません。React context に { apiUrl, authToken, sessionId } を提供し、必要に応じて useChatStore を hydrate します。Discovery route は { baseUrl, authToken } または { port, authToken } を返せます。この route は信頼済み host app route としてだけ公開するのが安全です。

<SnaSession>

<SnaSession id="review-panel">
  {children}
</SnaSession>
PropTypeRequiredDescription
idstringyesdescendant hooks が使う session ID です。
childrenReact.ReactNodeyesこの session scope が適用される subtree です。

SnaSession は parent の API URL を再利用し、subtree の session ID だけを変更します。

useSnaContext()

const context = useSnaContext(): { apiUrl: string; authToken?: string; sessionId: string }
FieldDescription
apiUrl現在の SNA server base URL です。
authTokenhooks と chat store が使う token です。
sessionId現在の subtree の active session ID です。

目次