File tree Expand file tree Collapse file tree 4 files changed +92
-2
lines changed Expand file tree Collapse file tree 4 files changed +92
-2
lines changed Original file line number Diff line number Diff line change 1
1
// COMPONENTS
2
2
import Greeting from "./components/Basics/Greeting" ;
3
- import Counter from "./components/Hooks/useStateHook/Counter" ;
3
+ // import Counter from "./components/Hooks/useStateHook/Counter";
4
4
import Form from "./project/Form" ;
5
5
import ThemeToggler from "./project/ThemeToggler" ;
6
6
import HandlingForm from "./components/Hooks/useRefHook/HandlingForm" ;
7
+ import ChangeTheme from "./components/Hooks/useMemo/ChangeTheme" ;
8
+ import DisplayList from "./components/Hooks/useCallback/DisplayList" ;
7
9
// TRY IT YOURSELF COMPONENTS
8
10
import FormDetails from "./tryityourself/Akash/FormDetails" ;
9
11
import RandomBackground from "./tryityourself/Akash/RandomBackground" ;
10
12
11
13
const App = ( ) => {
12
- return < RandomBackground /> ;
14
+ return < DisplayList /> ;
13
15
} ;
14
16
15
17
export default App ;
Original file line number Diff line number Diff line change
1
+ import { useCallback , useState } from "react" ;
2
+ import List from "./List" ;
3
+
4
+ const DisplayList = ( ) => {
5
+ const [ number , setNumber ] = useState ( 1 ) ;
6
+ const [ dark , setDark ] = useState ( false ) ;
7
+
8
+ // const getItems = () => {
9
+ // return [number, number + 1, number + 2];
10
+ // };
11
+
12
+ const getItems = useCallback ( ( ) => {
13
+ return [ number , number + 1 , number + 2 ] ;
14
+ } , [ number ] ) ;
15
+
16
+ const theme = {
17
+ backgroundColor : dark ? "black" : "white" ,
18
+ color : dark ? "white" : "black" ,
19
+ } ;
20
+
21
+ return (
22
+ < div style = { theme } >
23
+ < input
24
+ type = "number"
25
+ value = { number }
26
+ onChange = { ( e ) => setNumber ( parseInt ( e . target . value ) ) }
27
+ > </ input >
28
+ < button onClick = { ( ) => setDark ( ( prevDark ) => ! prevDark ) } >
29
+ Change theme
30
+ </ button >
31
+ < List getItems = { getItems } />
32
+ </ div >
33
+ ) ;
34
+ } ;
35
+
36
+ export default DisplayList ;
Original file line number Diff line number Diff line change
1
+ import { useEffect , useState } from "react" ;
2
+
3
+ const List = ( { getItems } ) => {
4
+ const [ items , setItems ] = useState ( [ ] ) ;
5
+
6
+ useEffect ( ( ) => {
7
+ setItems ( getItems ( ) ) ;
8
+
9
+ console . log ( "Updating items" ) ;
10
+ } , [ getItems ] ) ;
11
+
12
+ return items . map ( ( item , index ) => < div key = { index } > { item } </ div > ) ;
13
+ } ;
14
+
15
+ export default List ;
Original file line number Diff line number Diff line change
1
+ import { useMemo , useState } from "react" ;
2
+
3
+ const ChangeTheme = ( ) => {
4
+ const [ number , setNumber ] = useState ( 0 ) ;
5
+ const [ dark , setDark ] = useState ( false ) ;
6
+
7
+ const doubleNumber = useMemo ( ( ) => {
8
+ return slowFunction ( number ) ;
9
+ } , [ number ] ) ;
10
+
11
+ const themeStyles = {
12
+ backgroundColor : dark ? "black" : "white" ,
13
+ color : dark ? "white" : "black" ,
14
+ } ;
15
+
16
+ function slowFunction ( num ) {
17
+ console . log ( "Calling slow function" ) ;
18
+ for ( let i = 0 ; i <= 1000000000 ; i ++ ) { }
19
+ return num * 2 ;
20
+ }
21
+
22
+ return (
23
+ < >
24
+ < input
25
+ type = "number"
26
+ value = { number }
27
+ onChange = { ( e ) => setNumber ( e . target . value ) }
28
+ > </ input >
29
+ < button onClick = { ( ) => setDark ( ( prevDark ) => ! prevDark ) } >
30
+ Change theme
31
+ </ button >
32
+ < div style = { themeStyles } > { doubleNumber } </ div >
33
+ </ >
34
+ ) ;
35
+ } ;
36
+
37
+ export default ChangeTheme ;
You can’t perform that action at this time.
0 commit comments