From 6d684f0da87c05bf852a7cfcad433fa60886b32d Mon Sep 17 00:00:00 2001 From: Jan Vincent Liwanag Date: Sat, 25 Apr 2020 11:32:09 +0800 Subject: [PATCH 1/2] Add a variant of useState where update is always const --- src/React/Basic/Hooks.purs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/React/Basic/Hooks.purs b/src/React/Basic/Hooks.purs index d060486..4e04c78 100644 --- a/src/React/Basic/Hooks.purs +++ b/src/React/Basic/Hooks.purs @@ -7,6 +7,7 @@ module React.Basic.Hooks , ReactChildren , memo , useState + , useStateConst , UseState , useEffect , useEffectOnce @@ -39,6 +40,7 @@ module React.Basic.Hooks ) where import Prelude hiding (bind, discard) +import Data.Bifunctor (rmap) import Data.Function.Uncurried (Fn2, mkFn2) import Data.Maybe (Maybe) import Data.Newtype (class Newtype) @@ -165,6 +167,13 @@ useState initialState = unsafeHook do runEffectFn2 useState_ (mkFn2 Tuple) initialState +useStateConst :: + forall state. + state -> + Hook (UseState state) (state /\ (state -> Effect Unit)) +useStateConst initialState = + useState initialState <#> rmap (_ <<< const) + foreign import data UseState :: Type -> Type -> Type -- | Runs the given effect when the component is mounted and any time the given From 3e8b10dec9f38509f5ca685c325b43e2276faeed Mon Sep 17 00:00:00 2001 From: Jan Vincent Liwanag Date: Tue, 28 Apr 2020 21:41:43 +0800 Subject: [PATCH 2/2] Rename useStateConst to useState' --- src/React/Basic/Hooks.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/React/Basic/Hooks.purs b/src/React/Basic/Hooks.purs index 4e04c78..056f143 100644 --- a/src/React/Basic/Hooks.purs +++ b/src/React/Basic/Hooks.purs @@ -7,7 +7,7 @@ module React.Basic.Hooks , ReactChildren , memo , useState - , useStateConst + , useState' , UseState , useEffect , useEffectOnce @@ -167,11 +167,11 @@ useState initialState = unsafeHook do runEffectFn2 useState_ (mkFn2 Tuple) initialState -useStateConst :: +useState' :: forall state. state -> Hook (UseState state) (state /\ (state -> Effect Unit)) -useStateConst initialState = +useState' initialState = useState initialState <#> rmap (_ <<< const) foreign import data UseState :: Type -> Type -> Type