@@ -7,11 +7,10 @@ import Affjax.StatusCode (StatusCode(..))
7
7
import Data.Either (Either (..))
8
8
import Data.Maybe (Maybe (..))
9
9
import Effect (Effect )
10
- import Effect.Class (liftEffect )
11
10
import Effect.Exception (throw )
12
11
import React.Basic.DOM (render )
13
12
import React.Basic.DOM as R
14
- import React.Basic.Hooks (Component , component , useState' , (/\) )
13
+ import React.Basic.Hooks (Component , component )
15
14
import React.Basic.Hooks as React
16
15
import React.Basic.Hooks.Aff (useAff )
17
16
import Web.DOM.NonElementParentNode (getElementById )
@@ -21,7 +20,6 @@ import Web.HTML.Window (document)
21
20
22
21
data TextState
23
22
= Failure
24
- | Loading
25
23
| Success String
26
24
27
25
main :: Effect Unit
@@ -38,14 +36,13 @@ mkBookComponent = do
38
36
let
39
37
url = " https://elm-lang.org/assets/public-opinion.txt"
40
38
component " Book" \_ -> React .do
41
- (textState /\ setTextState) <- useState' Loading
42
- useAff unit do
39
+ textState <- useAff unit do
43
40
result <- Affjax .get ResponseFormat .string url
44
- liftEffect case result of
41
+ pure case result of
45
42
Right response
46
- | response.status == StatusCode 200 -> setTextState ( Success response.body)
47
- _ -> setTextState Failure
43
+ | response.status == StatusCode 200 -> Success response.body
44
+ _ -> Failure
48
45
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