contact

blog-MainImage

Kabe-Log

2021-12-20

2022-1-30

valtioを使用し、Reactの外で状態管理を行う

frontend,

React.js,

Library,

TypeScript

オンラインサロンで、valtioについて学んだので忘れないうちにアウトプット。

valtioとは

Poimandresが開発している状態管理ライブラリの一つ。Poimandresは他にも、jotai、zustandと、3種類の状態管理ライブラリを開発しています。

こちらがGithubになります。 https://github.com/pmndrs/valtio

特徴として、valtioはReactの外で状態を保持します。そのため、コンポーネント外に、コードを記述できます。 また、イミュータブルな関数を使用できる点も特徴です。

実際に使ってみる

まずはインストール

yarn add valtio

以下のコードはreactの外で記述できます。型定義もできます。

import { proxy } from 'valtio'; //状態管理したいオブジェクトをproxyでラップします。 export const state = proxy<{arr: string[]}>({ arr: [], }); // 配列に要素を追加 const addItem = (item) => {   if (!item) {     return;   }   state.arr.push(item) };

コンポーネント内で、useSnapshotを使用し、stateを表示します。

import { useSnapshot } from "valtio"; const Index = () => { const { arr } = useSnapshot(state); return <div>{arr}</div>; };

関数を呼び出して、stateを変更してみます。

const item = ‘apple’  //本来なら、フォームで出力した値などをそのまま引数に入れる ~~~ ~~~ <button onClick={() => addItem(item)}>追加</button> // ボタンを押すと、apple が追加される

値を変更することができました。工夫すれば、コンポーネントの中がスッキリして可読性が上がりそうですね。 簡単にしか触ってませんが、状態管理ライブラリの中でも有名なReduxと比べると、記述量が少なすぎて逆に不安になるほどです。

今後は、他の二つのライブラリも触って違いを確かめてみたいと思います。

search

recommended

AWS資格 SAPとSOAを取得したので、対策や受験時の感想について
2022-05-23AWS資格 SAPとSOAを取得したので、対策や受験時の感想について
実務経験一年の転職活動(エンジニア生活:2月)
2022-03-15実務経験一年の転職活動(エンジニア生活:2月)
2022年は、フルスタックエンジニアに(エンジニア生活:1月)
2022-02-072022年は、フルスタックエンジニアに(エンジニア生活:1月)
「AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ」を読んだ感想
2022-01-29「AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ」を読んだ感想
エンジニア転職した一年の振り返り
2022-01-04エンジニア転職した一年の振り返り
Remixと朝活(エンジニア生活:11月)
2021-12-02Remixと朝活(エンジニア生活:11月)

contact