みなさん、メリークリスマス!!
本日はクリスマスイブですね。いかがお過ごしでしょうか?
これが公開された今頃は、友人とUSJに行っていることでしょう ^^
みなさんも有意義なクリスマスを過ごせたらいいですね!
さて、皆さん。
Vue.jsで開発する際、状態管理にはどのようなツールを使用していますか?
今回は私も業務で使用してた、状態管理ツール「Pinia」についてご紹介します!
Piniaとは?
Piniaは、Vue.jsのための状態管理ライブラリです。
Vuexから派生し、Vue.jsの公式ツールチェインに取り込まれた新しいバージョンの状態管理ツールとして開発されました。
Piniaは、シンプルなAPI、型の安全性、軽量性、柔軟性を特徴としています。
なぜPiniaを使うべきなのか?
Piniaを使うメリットはいくつかあります。
見た目がスッキリ
Piniaを使うことで、状態管理に関するコードの記述量が減ります。特に、Vuexのような「store.commit("mutation名", 値)」といった冗長な記述が不要になります。
型の安全性が高い
PiniaはTypeScriptに完全に対応しており、型推論が機能します。変な値を入れようとするとエラーが出るため、開発者は安心して開発に取り組むことができます。
分割が容易
Piniaでは、ストアを複数作成することができます。これにより、目的に応じたストアの作成や管理が容易になります。
Piniaの使い方
Piniaの使い方はとてもシンプルです。
まずはストアの定義をします。
Javascriptimport { defineStore } from "pinia"
export const useStore = defineStore("counter", {
state: () => ({
count: 0,
}),
getters: {
tenfold() {
return this.count * 10
},
},
actions: {
increment() {
this.count++
},
},
})
上記のコードでは、ストアの定義が行われています。
defineStore
関数を使用し、必要な状態やゲッター、アクションを定義します。
次に、コンポーネントでストアを使用する方法を見てみましょう。
HTML<script setup lang="ts">
import { useStore } from "@/store/store"
const store = useStore()
console.log(store.counter)
store.counter = 10
console.log(store.counter)
console.log(store.tenfold)
</script>
上記のコードでは、useStore
関数をインポートして、コンポーネント内で使用しています。
変数store
にストアのインスタンスを格納し、状態の参照や変更、ゲッターの使用が可能です。
まとめ
Piniaは、Vue.jsの新しい状態管理ツールであり、シンプルなAPIや型の安全性、分割が容易といった特徴があります。
Vuexからの移行も比較的容易であり、開発効率の向上にも繋がります。
もしVue.jsの状態管理にお悩みの方がいらっしゃったら、ぜひPiniaを試してみてはいかがでしょうか?