@@ -10,24 +10,44 @@ def render(react_element, destination_id, callback=lambda: None):
1010 ReactDOM .render (react_element , container , callback )
1111
1212
13- # Create a component
13+ useState = React .useState
14+ useEffect = React .useEffect
15+ useRef = React .useRef
16+
1417
18+ def useInterval (func , delay ):
19+ ref = useRef (func )
20+ ref .current = func
1521
16- Hello = React .createClass ({
17- 'displayName' : 'Hello' ,
22+ def setup ():
23+ id = setInterval (lambda : ref .current (), delay )
24+ return lambda : cleanInterval (id )
1825
19- 'getInitialState' : lambda : { 'counter' : 0 },
26+ useEffect ( setup , [ delay ])
2027
21- 'updateCounter' : lambda : (this .setState ({'counter' : this .state ['counter' ]+ 1 })),
2228
23- 'componentDidMount' : lambda : ( setInterval ( this . updateCounter , 1000 )),
29+ # Create a component
2430
25- 'render' : lambda : h ('div' , {'className' : 'maindiv' },
26- h ('h1' , None , 'Hello ' , this .props ['name' ]),
27- h ('p' , None , 'Lorem ipsum dolor sit ame.' ),
28- h ('p' , None , 'Counter: ' , this .state ['counter' ])
29- )
30- })
31+ def Hello (props ):
32+ count , setCount = useState (0 )
33+
34+ def updateCounter ():
35+ setCount (count + 1 )
36+
37+ useInterval (updateCounter , 1000 )
38+
39+ return h (
40+ 'div' ,
41+ {'className' : 'maindiv' },
42+ h ('h1' , None , 'Hello ' , props ['name' ]),
43+ h ('p' , None , 'Lorem ipsum dolor sit ame.' ),
44+ h ('p' , None , 'Counter: ' , count ),
45+ h (
46+ 'button' ,
47+ {'onClick' : updateCounter },
48+ 'Increment' ,
49+ )
50+ )
3151
3252
3353# Render the component in a 'container' div
0 commit comments