File tree Expand file tree Collapse file tree 5 files changed +58
-25
lines changed Expand file tree Collapse file tree 5 files changed +58
-25
lines changed Original file line number Diff line number Diff line change
1
+ import React , { useState , useEffect , useCallback } from "react" ;
2
+
3
+ function useWinSize ( ) {
4
+ const [ size , setSize ] = useState ( { } ) ;
5
+
6
+ const onResize = useCallback ( ( ) => {
7
+ setSize ( {
8
+ width : document . documentElement . clientWidth ,
9
+ height : document . documentElement . clientHeight ,
10
+ } ) ;
11
+ } , [ ] ) ;
12
+
13
+ useEffect ( ( ) => {
14
+ window . addEventListener ( "resize" , onResize ) ;
15
+ return ( ) => {
16
+ console . log ( "remove" ) ;
17
+ window . removeEventListener ( "resize" , onResize ) ;
18
+ } ;
19
+ } ) ;
20
+ return size ;
21
+ }
22
+ export default useWinSize ;
Original file line number Diff line number Diff line change 1
- import React , { useState , useEffect , useCallback } from "react" ;
2
-
3
- function useWinSize ( ) {
4
- const [ size , setSize ] = useState ( {
5
- width : document . documentElement . clientWidth ,
6
- height : document . documentElement . clientHeight ,
7
- } ) ;
8
-
9
- const onResize = useCallback ( ( ) => {
10
- setSize ( {
11
- width : document . documentElement . clientWidth ,
12
- height : document . documentElement . clientHeight ,
13
- } ) ;
14
- } , [ ] ) ;
15
-
16
- useEffect ( ( ) => {
17
- window . addEventListener ( "resize" , onResize ) ;
18
- return ( ) => {
19
- window . removeEventListener ( "resize" , onResize ) ;
20
- } ;
21
- } ) ;
22
-
23
- return size ;
24
- }
1
+ import React from "react" ;
2
+ import useWinSize from "../commonHook/index" ;
25
3
26
4
function Example ( ) {
27
5
const size = useWinSize ( ) ;
@@ -33,4 +11,5 @@ function Example() {
33
11
</ >
34
12
) ;
35
13
}
14
+
36
15
export default Example ;
Original file line number Diff line number Diff line change
1
+ import React , { useState , useCallback } from "react" ;
2
+
3
+ function Page ( ) {
4
+ const [ count , setCount ] = useState ( 1 ) ;
5
+ function calculate ( count ) {
6
+ let sum = 0 ;
7
+ for ( let i = 0 ; i < count * 100 ; i += 1 ) {
8
+ sum += i ;
9
+ }
10
+ return sum ;
11
+ }
12
+ const expensive = useCallback ( calculate ( count ) , [ count ] ) ;
13
+
14
+ return (
15
+ < div >
16
+ < h4 >
17
+ { count } -{ calculate ( count ) }
18
+ </ h4 >
19
+ < div >
20
+ < button type = "button" onClick = { ( ) => setCount ( count + 1 ) } >
21
+ add
22
+ </ button >
23
+ </ div >
24
+ </ div >
25
+ ) ;
26
+ }
27
+
28
+ export default Page ;
Original file line number Diff line number Diff line change @@ -18,7 +18,6 @@ function Page() {
18
18
记住,传入 useMemo 的函数会在渲染期间执行。请不要在这个函数内部执行与渲染无关的操作,诸如副作用这类的操作属于
19
19
useEffect 的适用范畴,而不是 useMemo。 如果没有提供依赖项数组,useMemo 在每次渲染时都会计算新的值.
20
20
< br />
21
- useCallback(fn, deps) 相当于 useMemo(() => fn, deps)
22
21
</ h3 >
23
22
< h4 >
24
23
{ count } -{ expensive }
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import Optimize from "../page/Optimize/index";
12
12
import EchartBox from "../page/echartBox/index" ;
13
13
import ChinaMap from "../page/chinaMap/index" ;
14
14
import UseMemo from "../page/useMemo/index" ;
15
+ import UseCallback from "../page/useCallback/index" ;
15
16
import Memo from "../page/memoParent/index" ;
16
17
import HeightEchart from "../page/heightEchart/index" ;
17
18
import FormBox from "../page/form/index" ;
@@ -118,6 +119,9 @@ function Header() {
118
119
< li >
119
120
< Link to = "/useMemo" > hook之useMemo,相当于vue中的计算属性computed</ Link >
120
121
</ li >
122
+ < li >
123
+ < Link to = "/useCallback" > hook之useCallback,useCallback(fn, deps) 相当于 useMemo(() => fn, deps)</ Link >
124
+ </ li >
121
125
< li >
122
126
< Link to = "/form" > form表单</ Link >
123
127
</ li >
@@ -216,6 +220,7 @@ function App({ value, name }) {
216
220
< Route path = "/echart" component = { EchartBox } />
217
221
< Route path = "/map" component = { ChinaMap } />
218
222
< Route path = "/useMemo" component = { UseMemo } />
223
+ < Route path = "/useCallback" component = { UseCallback } />
219
224
< Route path = "/memo" component = { Memo } />
220
225
< Route path = "/heightEchart" component = { HeightEchart } />
221
226
< Route path = "/form" component = { FormBox } />
You can’t perform that action at this time.
0 commit comments