1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VueFesでpiniaについて得た学び(分割代入・ライブラリー)

Last updated at Posted at 2024-10-20

はじめに

昨日はVueFes 2024に参加してきました!
面白いテーマも多く、面白いスポンサーブースも多かったです。トークセッションの中では、「Piniaの現状と今後」というものがありました。

そのセッションで、今までpiniaについて知らなかったところが何点かあったためまとめてみました。

1. stateとactionをまとめて分割代入

piniaのsetup storeで開発をしていると、以下のような場面に出会うことがあります。
state要素(storeで定義したref, computedなど)はstoreToRefsを使って分割代入ができますが、actions要素(メソッド)はstoreのインスタンスから直接分割代入を行う必要がありました。

そのため、毎回vueファイルには分割代入のために二つの記述が必要でした。

<script lang="ts" setup>
import { useHomeStore } from '@store/homeStore.ts';
import { storeToRefs } from 'pinia';

const homeStore = useHomeStore();

// state分割代入
const { clickedPhoto, clickedImage, isOpened, photoIndex } = storeToRefs(homeStore);

// actions分割代入
const { getPhoto, setPhoto } = homestore;
</script>

少し不便だと思いつつ、特に対応策は見つかっていなかったところ、今回のセッションで以下の記事を元にした対応策について知ることができました。

要するに以下のような記述をすることで分割代入をまとめることができます。

export const useProcessedHomeStore = () => {
  const store = useHomeStore()
  return { ...store, ...storeToRefs(store) }
}

こうすることで毎回vueファイルにstoreToRefsのimportを記述しなくても良くなりました。

<script lang="ts" setup>
import { useProcessedHomeStore } from '@store/processedHomeStore.ts';

const homeStore = useProcessedHomeStore();

// まとめて分割代入
const { clickedPhoto, clickedImage, isOpened, photoIndex, getPhoto, setPhoto } = homestore;
</script>

2. 更なるライブラリーの発見

Pinia Plugin Persistedstate

piniaを使ってlocalstorageの管理を簡単に行うことができるライブラリーです。
piniaとlocalstorageの管理が別々になって管理が難しいと思っていたため、ぜひ使ってみたいです。

Pinia Colada

似たような名前のカクテルがあるらしいです。

このライブラリーを使うことで、tanstack queryのようにキャッシュの管理ができるらしいです。
現在やっているプロジェクトでpiniaとtanstack queryを両方使っていますが、状態管理がバラバラになっているとlocalstorageと同じく何が何を持っているかよくわからなくなることがあります。

このように、piniaを使って状態管理を一元化できるライブラリーも揃っていることがわかりました。

おわりに

今回はスポンサーブースが楽しくてあまり多くのセッションは聞けていないのですが、その中でもいろいろな学びを得ることができました。
来年もまたVueFesいきたいな!

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?