Skip to content

Commit 0d54027

Browse files
committed
Merge pull request #46 from ethul/topic/lifecycle-function-types
Adding type synonyms for lifecycle functions
2 parents 6891b2e + db0c4cd commit 0d54027

File tree

2 files changed

+162
-66
lines changed

2 files changed

+162
-66
lines changed

docs/React.md

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,76 @@ A function which handles events.
150150
type Render props state eff = ReactThis props state -> Eff (props :: ReactProps props, refs :: ReactRefs Disallowed, state :: ReactState ReadOnly state | eff) ReactElement
151151
```
152152

153-
A rendering function.
153+
A render function.
154+
155+
#### `GetInitialState`
156+
157+
``` purescript
158+
type GetInitialState props state eff = ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState Disallowed state, refs :: ReactRefs Disallowed | eff) state
159+
```
160+
161+
A get initial state function.
162+
163+
#### `ComponentWillMount`
164+
165+
``` purescript
166+
type ComponentWillMount props state eff = ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs Disallowed | eff) Unit
167+
```
168+
169+
A component will mount function.
170+
171+
#### `ComponentDidMount`
172+
173+
``` purescript
174+
type ComponentDidMount props state eff = ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit
175+
```
176+
177+
A component did mount function.
178+
179+
#### `ComponentWillReceiveProps`
180+
181+
``` purescript
182+
type ComponentWillReceiveProps props state eff = ReactThis props state -> props -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit
183+
```
184+
185+
A component will receive props function.
186+
187+
#### `ShouldComponentUpdate`
188+
189+
``` purescript
190+
type ShouldComponentUpdate props state eff = ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Boolean
191+
```
192+
193+
A should component update function.
194+
195+
#### `ComponentWillUpdate`
196+
197+
``` purescript
198+
type ComponentWillUpdate props state eff = ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit
199+
```
200+
201+
A component will update function.
202+
203+
#### `ComponentDidUpdate`
204+
205+
``` purescript
206+
type ComponentDidUpdate props state eff = ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit
207+
```
208+
209+
A component did update function.
210+
211+
#### `ComponentWillUnmount`
212+
213+
``` purescript
214+
type ComponentWillUnmount props state eff = ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit
215+
```
216+
217+
A component will unmount function.
154218

155219
#### `ReactSpec`
156220

157221
``` purescript
158-
type ReactSpec props state eff = { render :: Render props state eff, displayName :: String, getInitialState :: ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState Disallowed state, refs :: ReactRefs Disallowed | eff) state, componentWillMount :: ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs Disallowed | eff) Unit, componentDidMount :: ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillReceiveProps :: ReactThis props state -> props -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, shouldComponentUpdate :: ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Boolean, componentWillUpdate :: ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentDidUpdate :: ReactThis props state -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillUnmount :: ReactThis props state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit }
222+
type ReactSpec props state eff = { render :: Render props state eff, displayName :: String, getInitialState :: GetInitialState props state eff, componentWillMount :: ComponentWillMount props state eff, componentDidMount :: ComponentDidMount props state eff, componentWillReceiveProps :: ComponentWillReceiveProps props state eff, shouldComponentUpdate :: ShouldComponentUpdate props state eff, componentWillUpdate :: ComponentWillUpdate props state eff, componentDidUpdate :: ComponentDidUpdate props state eff, componentWillUnmount :: ComponentWillUnmount props state eff }
159223
```
160224

161225
A specification of a component.

src/React.purs

Lines changed: 96 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ module React
2020
, Refs()
2121

2222
, Render()
23+
, GetInitialState()
24+
, ComponentWillMount()
25+
, ComponentDidMount()
26+
, ComponentWillReceiveProps()
27+
, ShouldComponentUpdate()
28+
, ComponentWillUpdate()
29+
, ComponentDidUpdate()
30+
, ComponentWillUnmount()
2331

2432
, ReactSpec()
2533
, ReactClass()
@@ -134,7 +142,7 @@ type EventHandlerContext eff props state result =
134142
| eff
135143
) result
136144

137-
-- | A rendering function.
145+
-- | A render function.
138146
type Render props state eff =
139147
ReactThis props state ->
140148
Eff ( props :: ReactProps props
@@ -143,73 +151,97 @@ type Render props state eff =
143151
| eff
144152
) ReactElement
145153

154+
-- | A get initial state function.
155+
type GetInitialState props state eff =
156+
ReactThis props state ->
157+
Eff ( props :: ReactProps props
158+
, state :: ReactState Disallowed state
159+
, refs :: ReactRefs Disallowed
160+
| eff
161+
) state
162+
163+
-- | A component will mount function.
164+
type ComponentWillMount props state eff =
165+
ReactThis props state ->
166+
Eff ( props :: ReactProps props
167+
, state :: ReactState ReadWrite state
168+
, refs :: ReactRefs Disallowed
169+
| eff
170+
) Unit
171+
172+
-- | A component did mount function.
173+
type ComponentDidMount props state eff =
174+
ReactThis props state ->
175+
Eff ( props :: ReactProps props
176+
, state :: ReactState ReadWrite state
177+
, refs :: ReactRefs ReadOnly
178+
| eff
179+
) Unit
180+
181+
-- | A component will receive props function.
182+
type ComponentWillReceiveProps props state eff =
183+
ReactThis props state ->
184+
props ->
185+
Eff ( props :: ReactProps props
186+
, state :: ReactState ReadWrite state
187+
, refs :: ReactRefs ReadOnly
188+
| eff
189+
) Unit
190+
191+
-- | A should component update function.
192+
type ShouldComponentUpdate props state eff =
193+
ReactThis props state ->
194+
props ->
195+
state ->
196+
Eff ( props :: ReactProps props
197+
, state :: ReactState ReadWrite state
198+
, refs :: ReactRefs ReadOnly
199+
| eff
200+
) Boolean
201+
202+
-- | A component will update function.
203+
type ComponentWillUpdate props state eff =
204+
ReactThis props state ->
205+
props ->
206+
state ->
207+
Eff ( props :: ReactProps props
208+
, state :: ReactState ReadWrite state
209+
, refs :: ReactRefs ReadOnly
210+
| eff
211+
) Unit
212+
213+
-- | A component did update function.
214+
type ComponentDidUpdate props state eff =
215+
ReactThis props state ->
216+
props ->
217+
state ->
218+
Eff ( props :: ReactProps props
219+
, state :: ReactState ReadOnly state
220+
, refs :: ReactRefs ReadOnly
221+
| eff
222+
) Unit
223+
224+
-- | A component will unmount function.
225+
type ComponentWillUnmount props state eff =
226+
ReactThis props state ->
227+
Eff ( props :: ReactProps props
228+
, state :: ReactState ReadOnly state
229+
, refs :: ReactRefs ReadOnly
230+
| eff
231+
) Unit
232+
146233
-- | A specification of a component.
147234
type ReactSpec props state eff =
148235
{ render :: Render props state eff
149236
, displayName :: String
150-
, getInitialState
151-
:: ReactThis props state ->
152-
Eff ( props :: ReactProps props
153-
, state :: ReactState Disallowed state
154-
, refs :: ReactRefs Disallowed
155-
| eff
156-
) state
157-
, componentWillMount
158-
:: ReactThis props state ->
159-
Eff ( props :: ReactProps props
160-
, state :: ReactState ReadWrite state
161-
, refs :: ReactRefs Disallowed
162-
| eff
163-
) Unit
164-
, componentDidMount
165-
:: ReactThis props state ->
166-
Eff ( props :: ReactProps props
167-
, state :: ReactState ReadWrite state
168-
, refs :: ReactRefs ReadOnly
169-
| eff
170-
) Unit
171-
, componentWillReceiveProps
172-
:: ReactThis props state ->
173-
props ->
174-
Eff ( props :: ReactProps props
175-
, state :: ReactState ReadWrite state
176-
, refs :: ReactRefs ReadOnly
177-
| eff
178-
) Unit
179-
, shouldComponentUpdate
180-
:: ReactThis props state ->
181-
props ->
182-
state ->
183-
Eff ( props :: ReactProps props
184-
, state :: ReactState ReadWrite state
185-
, refs :: ReactRefs ReadOnly
186-
| eff
187-
) Boolean
188-
, componentWillUpdate
189-
:: ReactThis props state ->
190-
props ->
191-
state ->
192-
Eff ( props :: ReactProps props
193-
, state :: ReactState ReadWrite state
194-
, refs :: ReactRefs ReadOnly
195-
| eff
196-
) Unit
197-
, componentDidUpdate
198-
:: ReactThis props state ->
199-
props ->
200-
state ->
201-
Eff ( props :: ReactProps props
202-
, state :: ReactState ReadOnly state
203-
, refs :: ReactRefs ReadOnly
204-
| eff
205-
) Unit
206-
, componentWillUnmount
207-
:: ReactThis props state ->
208-
Eff ( props :: ReactProps props
209-
, state :: ReactState ReadOnly state
210-
, refs :: ReactRefs ReadOnly
211-
| eff
212-
) Unit
237+
, getInitialState :: GetInitialState props state eff
238+
, componentWillMount :: ComponentWillMount props state eff
239+
, componentDidMount :: ComponentDidMount props state eff
240+
, componentWillReceiveProps :: ComponentWillReceiveProps props state eff
241+
, shouldComponentUpdate :: ShouldComponentUpdate props state eff
242+
, componentWillUpdate :: ComponentWillUpdate props state eff
243+
, componentDidUpdate :: ComponentDidUpdate props state eff
244+
, componentWillUnmount :: ComponentWillUnmount props state eff
213245
}
214246

215247
-- | Create a component specification.

0 commit comments

Comments
 (0)