ステートオブジェクトを包む
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>
)
}