Skip to content

RosProvider

roslib.Ros の接続を1つ生成・保持し、その状態とともに React の Context 経由で配下のツリーに公開します。roshooks の他のすべての Hooks はこの Provider から接続を取得するため、それらを使う部分は必ず RosProvider でラップしてください。

tsx
import { RosProvider } from "roshooks";

<RosProvider url="ws://localhost:9090">
  <App />
</RosProvider>;

Props

Prop既定値説明
urlstringrosbridge サーバーの URL(例: "ws://localhost:9090")。
autoConnectbooleantrueマウント時、および url 変更時に自動接続するか。
transportFactoryITransportFactoryroslib の既定 WebSocket トランスポート接続に使うトランスポートを差し替えます。主にテストや WebRTC 構成で利用します。テストの書き方 を参照。
onConnection() => void接続に成功したときに呼ばれます。
onClose() => void接続が閉じたときに呼ばれます。
onError(error: unknown) => void接続エラー発生時に呼ばれます。
childrenReactNode

挙動

  • Ros インスタンスは初回レンダー時に一度だけ生成され、Provider が存在する間ずっと再利用されます(関係のない prop の変更で再生成されることはありません)。
  • autoConnecttrue の場合、マウント時と url 変更時に ros.connect(url) が呼ばれます。このとき既存の接続は先に閉じられます。
  • アンマウント時に接続を閉じ、内部で登録したイベントリスナーもすべて解除します。
  • 配下のコンポーネントは useRos(またはより低レベルな useRosContext)で接続と状態を取得します。

状態遷移の全体像は 接続状態の扱い方 を参照してください。

useRosContext()

ts
import { useRosContext } from "roshooks";

const { ros, status, error } = useRosContext();

useRos をはじめ、他のすべての Hooks が内部で利用している Context フックです。RosProvider の外側で呼び出すと例外を投げます。生の Context 値が必要な特別な理由がない限り、通常は useRos を使ってください。

Released under the BSD-3 License.