Skip to content

Commit 27e13ec

Browse files
committed
Add lens for actions
1 parent 930e8f2 commit 27e13ec

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/React/Redux.purs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@ module React.Redux
66
, Enhancer
77
, Enhancer_
88
, Store
9-
, createClass
10-
, createProviderElement
11-
, createElement
12-
, createStore
13-
, createStore'
14-
, reducerOptic
15-
169
, Spec
1710
, Render
1811
, GetInitialState
@@ -23,11 +16,17 @@ module React.Redux
2316
, ComponentWillUpdate
2417
, ComponentDidUpdate
2518
, ComponentWillUnmount
19+
, createClass
20+
, createProviderElement
21+
, createElement
22+
, createStore
23+
, createStore'
24+
, reducerOptic
2625
, spec
2726
, spec'
2827
) where
2928

30-
import Prelude (Unit, (<<<), (>>=), const, pure, id, unit)
29+
import Prelude (Unit, (<<<), (>>=), (<$), const, pure, id, unit)
3130

3231
import Control.Monad.Eff (Eff)
3332
import Control.Monad.Eff.Class (class MonadEff, liftEff)
@@ -100,8 +99,8 @@ spec getInitialState render =
10099
spec' :: forall props eff f action. Render props Unit eff f action -> Spec props Unit eff f action
101100
spec' = spec (\_ _ -> pure unit)
102101

103-
createClass :: forall props state eff f action state'. MonadEff (Effects eff) f => Getter' state' props -> Spec props state eff f action -> ReduxReactClass state' props
104-
createClass lens spec_ = connect (view lens) reactClass
102+
createClass :: forall props state eff f action action' state'. MonadEff (Effects eff) f => Getter' action' action -> Getter' state' props -> Spec props state eff f action' -> ReduxReactClass state' props
103+
createClass actionLens stateLens spec_ = connect (view stateLens) reactClass
105104
where
106105
reactClass :: React.ReactClass props
107106
reactClass =
@@ -117,8 +116,8 @@ createClass lens spec_ = connect (view lens) reactClass
117116
, componentWillUnmount: \this -> spec_.componentWillUnmount (dispatch this) this
118117
}
119118
where
120-
dispatch :: React.ReactThis props state -> f action -> f action
121-
dispatch this action = action >>= liftEff <<< runFn2 dispatch_ this
119+
dispatch :: React.ReactThis props state -> f action' -> f action'
120+
dispatch this action' = action' >>= \a -> a <$ liftEff (runFn2 dispatch_ this (view actionLens a))
122121

123122
createProviderElement :: forall props action state'. Store action state' -> ReduxReactClass state' props -> React.ReactElement
124123
createProviderElement store reduxClass = React.createElement providerClass { store: store } [ createElement reduxClass ]

0 commit comments

Comments
 (0)