Valtioで超絶簡単React状態管理


ステートオブジェクトを包む

import { proxy, useProxy } from 'valtio'

const state = proxy({ count: 0, text: 'hello' })

どこからでも変更できる

setInterval(() => {
  ++state.count
}, 1000)

useProxyでReactへ

function Counter() {
  const snapshot = useProxy(state)
  // 読み込む場合はsnapshot、いじる場合はstate
  // snapshotの読み込み部分が変化したら再描画される
  return (
    <div>
      {snapshot.count}
      <button onClick={() => ++state.count}>+1</button>
    </div>
  )
}