HalogenのuseState
useStateを使った感じ
code:purs(hs)
Hook.do
width /\ widthId <- Hooks.useState Nothing
初期値を渡す
ここではたまたまNothingだっただけmrsekut.icon
widthがstate
wdithIdは
Hooks.putなどに適用することで、setWidth的なものになる
イメージ的には、setWidth = Hooks.put widthId
putの他にも, getやmodify, modify_などもある
State Monadと同じ
ここでsetHogeみたいな関数を使いたい場合は、
useStateFnを使うと良い
halogen-hooks-extraに入っている
https://github.com/thomashoneyman/purescript-halogen-hooks/blob/main/docs/01-Hooks-At-A-Glance.md#using-a-modify-function-instead-of-an-identifier
code:purs(hs)
manyStates = Hooks.do
age /\ modifyAge <- useStateFn Hooks.modify_ 42
fruit /\ setFruit <- useStateFn Hooks.put "banana"
let
handler :: HookM _ Unit
handler = do
modifyAge \n -> n + 10
setFruit "strawberry"
困ることないだろうし、使って良さそうmrsekut.icon
強いて言えば、初期化時に状態を変更する関数(modifyとか)を渡さないといけないのがめんどいが、defaultよりはマシな感じがする
https://github.com/thomashoneyman/purescript-halogen-hooks/blob/main/docs/07-Hooks-API.md#usestate