Skip to content

Commit 7658e9b

Browse files
authored
Use useAff's result instead of synchronizing with separate state (#163)
* Use useAff's result instead of synchronizing with separate state * typo * fix warnings
1 parent 010aa52 commit 7658e9b

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

recipes/BookReactHooks/src/Main.purs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import Affjax.StatusCode (StatusCode(..))
77
import Data.Either (Either(..))
88
import Data.Maybe (Maybe(..))
99
import Effect (Effect)
10-
import Effect.Class (liftEffect)
1110
import Effect.Exception (throw)
1211
import React.Basic.DOM (render)
1312
import React.Basic.DOM as R
14-
import React.Basic.Hooks (Component, component, useState', (/\))
13+
import React.Basic.Hooks (Component, component)
1514
import React.Basic.Hooks as React
1615
import React.Basic.Hooks.Aff (useAff)
1716
import Web.DOM.NonElementParentNode (getElementById)
@@ -21,7 +20,6 @@ import Web.HTML.Window (document)
2120

2221
data TextState
2322
= Failure
24-
| Loading
2523
| Success String
2624

2725
main :: Effect Unit
@@ -38,14 +36,13 @@ mkBookComponent = do
3836
let
3937
url = "https://elm-lang.org/assets/public-opinion.txt"
4038
component "Book" \_ -> React.do
41-
(textState /\ setTextState) <- useState' Loading
42-
useAff unit do
39+
textState <- useAff unit do
4340
result <- Affjax.get ResponseFormat.string url
44-
liftEffect case result of
41+
pure case result of
4542
Right response
46-
| response.status == StatusCode 200 -> setTextState (Success response.body)
47-
_ -> setTextState Failure
43+
| response.status == StatusCode 200 -> Success response.body
44+
_ -> Failure
4845
pure case textState of
49-
Failure -> R.text "I was unable to load your book."
50-
Loading -> R.text "Loading..."
51-
Success fullText -> R.pre_ [ R.text fullText ]
46+
Nothing -> R.text "Loading..."
47+
Just Failure -> R.text "I was unable to load your book."
48+
Just (Success fullText) -> R.pre_ [ R.text fullText ]

0 commit comments

Comments
 (0)