Skip to content

Commit 4e7a3e8

Browse files
committed
update
1 parent 5a0753c commit 4e7a3e8

File tree

5 files changed

+58
-25
lines changed

5 files changed

+58
-25
lines changed

src/page/commonHook/index.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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;

src/page/hookTest/index.js

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,5 @@
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";
253

264
function Example() {
275
const size = useWinSize();
@@ -33,4 +11,5 @@ function Example() {
3311
</>
3412
);
3513
}
14+
3615
export default Example;

src/page/useCallback/index.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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;

src/page/useMemo/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ function Page() {
1818
记住,传入 useMemo 的函数会在渲染期间执行。请不要在这个函数内部执行与渲染无关的操作,诸如副作用这类的操作属于
1919
useEffect 的适用范畴,而不是 useMemo。 如果没有提供依赖项数组,useMemo 在每次渲染时都会计算新的值.
2020
<br />
21-
useCallback(fn, deps) 相当于 useMemo(() =&gt; fn, deps)
2221
</h3>
2322
<h4>
2423
{count}-{expensive}

src/router/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Optimize from "../page/Optimize/index";
1212
import EchartBox from "../page/echartBox/index";
1313
import ChinaMap from "../page/chinaMap/index";
1414
import UseMemo from "../page/useMemo/index";
15+
import UseCallback from "../page/useCallback/index";
1516
import Memo from "../page/memoParent/index";
1617
import HeightEchart from "../page/heightEchart/index";
1718
import FormBox from "../page/form/index";
@@ -118,6 +119,9 @@ function Header() {
118119
<li>
119120
<Link to="/useMemo">hook之useMemo,相当于vue中的计算属性computed</Link>
120121
</li>
122+
<li>
123+
<Link to="/useCallback">hook之useCallback,useCallback(fn, deps) 相当于 useMemo(() =&gt; fn, deps)</Link>
124+
</li>
121125
<li>
122126
<Link to="/form">form表单</Link>
123127
</li>
@@ -216,6 +220,7 @@ function App({ value, name }) {
216220
<Route path="/echart" component={EchartBox} />
217221
<Route path="/map" component={ChinaMap} />
218222
<Route path="/useMemo" component={UseMemo} />
223+
<Route path="/useCallback" component={UseCallback} />
219224
<Route path="/memo" component={Memo} />
220225
<Route path="/heightEchart" component={HeightEchart} />
221226
<Route path="/form" component={FormBox} />

0 commit comments

Comments
 (0)