Skip to content

useParam

max_vel_x のような ROS パラメータサーバー上の単一の値を読み書きします。既定ではマウント時に現在値を自動取得します。

tsx
import { useParam } from "roshooks";

const { value, loading, error, refresh, setValue, deleteValue } = useParam<number>("/max_vel_x");

引数

引数説明
namestringパラメータ名(例: "/max_vel_x")。
options.autoFetchboolean(既定 true)マウント時、および name 変更時に現在値を自動取得するか。

返り値

フィールド説明
valueT | null現在値。初回取得が成功するまでは null
loadingbooleanget/set/delete いずれかの呼び出し中は true
errorstring | null直近の失敗時のエラーメッセージ。
refresh() => Promise<T>パラメータサーバーから値を再取得します。
setValue(value: T) => Promise<void>パラメータサーバーに値を設定します。
deleteValue() => Promise<void>パラメータサーバー上のパラメータを削除します。

使用例

tsx
function MaxVelocityControl() {
  const { value, loading, setValue } = useParam<number>("/max_vel_x");

  return (
    <input
      type="number"
      value={value ?? 0}
      disabled={loading}
      onChange={(e) => setValue(Number(e.target.value)).catch(() => {})}
    />
  );
}

自動取得を無効化する

tsx
const { value, refresh } = useParam<number>("/max_vel_x", { autoFetch: false });

// 例えばボタン押下時など、任意のタイミングで取得する
<button onClick={() => refresh()}>読み込む</button>;

Released under the BSD-3 License.