Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
purescript-reactix
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
purescript-reactix
Commits
c2cd0e75
Commit
c2cd0e75
authored
Apr 25, 2019
by
James Laver
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Made useState return a normal curried Effect function for setting
parent
02dde946
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
6 deletions
+7
-6
Hooks.purs
src/Reactix/Hooks.purs
+6
-5
Spec.purs
test/Reactix/React/Spec.purs
+1
-1
No files found.
src/Reactix/Hooks.purs
View file @
c2cd0e75
...
...
@@ -30,12 +30,11 @@ import Reactix.React ( Hooks, react, unsafeHooksEffect )
--- useState
-- | A state hook is a tuple of value and setter
type State state = Tuple state (
EffectFn1 state
Unit)
type State state = Tuple state (
state -> Effect
Unit)
-- | Given an Effect function returning an initial value, returns a State
useState :: forall s. (Unit -> Effect s) -> Hooks (State s)
useState s = hook $ \_ -> pure $ tuple $ react ... "useState" $ [ delay s ]
useState s = hook $ \_ -> pure $ currySecond $ react ... "useState" $ [ delay s ]
-- -- useReducer
-- type Reducer state action = Tuple state (EffectFn1 action Unit)
...
...
@@ -146,8 +145,7 @@ useLayoutEffect5 a b c d f e = _useLayoutEffect e $ args5 a b c d f
type Ref state = Tuple state (state -> Effect Unit)
useRef :: forall r. r -> Hooks (Ref r)
useRef r = hook $ \_ -> pure $ friendly $ tupleCurrent $ react ... "useRef" $ [ r ]
where friendly (Tuple v s) = Tuple v (runEffectFn1 s)
useRef r = hook $ \_ -> pure $ currySecond $ tupleCurrent $ react ... "useRef" $ [ r ]
-- useContext
...
...
@@ -185,6 +183,9 @@ tupleCurrent = runFn2 _tupleCurrent Tuple
foreign import _tupleCurrent :: forall a b c. Fn2 (a -> b -> Tuple a b) c (Tuple a b)
currySecond :: forall a b c. Tuple a (EffectFn1 b c) -> Tuple a (b -> Effect c)
currySecond (Tuple a b) = Tuple a (runEffectFn1 b)
hook :: forall v. (Unit -> Effect v) -> Hooks v
hook = unsafeHooksEffect <<< delay
...
...
test/Reactix/React/Spec.purs
View file @
c2cd0e75
...
...
@@ -53,7 +53,7 @@ counterCpt = R.hooksComponent "Counter" cpt
pure $ div { className: "counter" }
[ button { type: "button", onClick: onclick setY (y + 1) } [ text "++" ]
, div {} [ text (show y) ] ]
onclick set to = mkEffectFn1 $ \e ->
runEffectFn1
set to
onclick set to = mkEffectFn1 $ \e -> set to
counterTest :: Spec Unit
counterTest =
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment