LoginSignup
4
4

More than 1 year has passed since last update.

【React】値を操作するコントローラーパッケージ(LEVA)

Last updated at Posted at 2021-10-27

概要

ReactでWebアプリケーションを作成していると、値を操作するコントローラーが欲しくなるときがあります。
ちょっと動作を確認したいときに、LEVAを使用すると簡単にコントローラーが実装できます。

LEVAについては、先日記事でまとめました。

しかし、LEVAの公式ドキュメントをよくよく見ると、テキスト化されていないインターフェイスが多くあることがわかったので、改めてまとめました。

軽く触ってみたい方はこちら

ドキュメント

  • 公式ドキュメント

  • 機能一覧

※ ただし、バージョンによる仕様変更や、TypeScriptの型システムでうまく使えない機能もありました。

現状で実装できたインターフェイス

インターフェイス

スクリーンショット 2021-10-28 011345.png

コード

以下を参照してください。

指定できる色は以下になります。

type e.g.
Name red(一覧
Hex #9442ff
Hex8 #8b33ffab
RgbString rgb(255, 47, 162)
RgbaString rgba(233, 30, 99, 0.9)
Rgb {r: 0, g: 150, b: 136}
Rgba {r: 0, g: 150, b: 136, a: 0.5}
Hsl {h: 4, s: 1, l: 1}
Hsla {h: 36, s: 1, l: 1, a: 1}
HslString hsl(199, 98%, 48%)
HslaString hsla(187, 1%, 42%, 0.9)
Hsv {h: 238, s: 1, v: 1}
Hsva {h: 58, s: 1, v: 1, a: 0.3}

フォルダ追加の注意点

フォルダによってプロパティをまとめることができますが、プロパティはフォルダの影響を受けません。

例えば、以下のようにフォルダを作成した場合、

const [datas, set] = useControls(() => ({
    check: true,
    folder: folder({
        check: true,
    })
}))

datasではcheckプロパティが重複するため、folderは無効になります。

datas = {
    check: true,
    check: true,
}

別名にすれば問題なく表示されます。

const [datas, set] = useControls(() => ({
    check: true,
    folder: folder({
        check2: true,
    })
}))

この動作は、ドキュメントに記載されています。

set 関数

コード例では使用していませんが、set関数を使用することでコントローラーの値を外部から変更することができます。

const [datas, set] = useControls(() => ({
    // ・・・
}))

例えば、コンポーネントをドラッグ操作してその位置を同期させる場合に使えます。

コントローラーの外観の変更

できることは少ないですが、コントローラーの外観を変更することもできます。
変更する場合、明示的にコンポーネントを追加して、プロパティを設定する必要があります。

return (
    <div className={styles.container}>
        <Leva flat titleBar={false} theme={{ fontSizes: { root: '0.8rem' } }} />
        <pre className={styles.textContainer}>{JSON.stringify(datas, null, 4)}</pre>
    </div>
)

ButtonGroup

ButtonGroupを使用すると、TypeScript上のエラーになりうまく実装できませんでした。
解決方法がわかる方は是非コメントで教えてください。

参考

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4