Skip to content

Commit 8106fb0

Browse files
MuYunyunmujue
authored andcommitted
docs: update
1 parent 268b2c4 commit 8106fb0

File tree

4 files changed

+81
-72
lines changed

4 files changed

+81
-72
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ Render Props:
5757
* React Hooks 的常见陷阱
5858
* 闭包陷阱, (useInterval, useFetch)
5959

60-
### React Hooks 使用中的问题
60+
###
61+
React Hooks 使用中的问题
6162

6263
#### 百思不解, 必是闭包
6364

src/index.js

Lines changed: 6 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,18 @@
1-
import React, { useState, useRef, useEffect, useReducer } from "react"
1+
import React from "react"
22
import ReactDOM from "react-dom"
3+
import { HookApp, ClassApp } from './tasks/task1'
4+
import { Demo } from './tasks/task2'
35
import useInterval from './useInterval'
46
import "./styles.css"
57

6-
function HookApp() {
7-
const [count, setCount] = useState(0)
8-
const handleAdd = () => {
9-
setCount(count + 1)
10-
}
11-
const handleAlert = () => {
12-
setTimeout(() => {
13-
window.alert(count)
14-
}, 2000)
15-
}
16-
return (
17-
<div className="App">
18-
<h1>Hook</h1>
19-
<h1>{count}</h1>
20-
<button onClick={handleAdd}>add</button>
21-
<button onClick={handleAlert}>alert</button>
22-
</div>
23-
)
24-
}
25-
26-
class ClassApp extends React.Component {
27-
state = {
28-
count: 0
29-
};
30-
31-
handleAdd = () => {
32-
this.setState({
33-
count: this.state.count + 1
34-
});
35-
};
36-
37-
handleAlert = () => {
38-
setTimeout(() => {
39-
window.alert(this.state.count);
40-
}, 2000);
41-
};
42-
43-
render() {
44-
return (
45-
<div className="App">
46-
<h1>Class</h1>
47-
<h1>{this.state.count}</h1>
48-
<button onClick={this.handleAdd}>add</button>
49-
<button onClick={this.handleAlert}>alert</button>
50-
</div>
51-
);
52-
}
53-
}
54-
55-
/* --------------- 分割线 --------------- */
56-
57-
function Demo() {
58-
const [count, setCount] = React.useState(0)
59-
60-
useEffect(() => {
61-
const id = setInterval(() => {
62-
setCount(count + 1)
63-
}, 2000)
64-
65-
return () => {
66-
clearInterval(id)
67-
}
68-
}, [])
69-
70-
return <div>Count: {count}</div>
71-
}
72-
738
function View() {
749
return (
7510
<React.Fragment>
76-
<HookApp />
11+
{/* <HookApp />
7712
<hr />
7813
<ClassApp />
79-
<hr />
80-
{/* <Demo /> */}
14+
<hr /> */}
15+
<Demo />
8116
</React.Fragment>
8217
);
8318
}

src/tasks/task1.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React from "react"
2+
3+
const { useState } = React
4+
5+
export function HookApp() {
6+
const [count, setCount] = useState(0)
7+
const handleAdd = () => {
8+
setCount(count + 1)
9+
}
10+
const handleAlert = () => {
11+
setTimeout(() => {
12+
window.alert(count)
13+
}, 2000)
14+
}
15+
return (
16+
<div className="App">
17+
<h1>Hook</h1>
18+
<h1>{count}</h1>
19+
<button onClick={handleAdd}>add</button>
20+
<button onClick={handleAlert}>alert</button>
21+
</div>
22+
)
23+
}
24+
25+
export class ClassApp extends React.Component {
26+
state = {
27+
count: 0
28+
};
29+
30+
handleAdd = () => {
31+
this.setState({
32+
count: this.state.count + 1
33+
});
34+
};
35+
36+
handleAlert = () => {
37+
setTimeout(() => {
38+
window.alert(this.state.count);
39+
}, 2000);
40+
};
41+
42+
render() {
43+
return (
44+
<div className="App">
45+
<h1>Class</h1>
46+
<h1>{this.state.count}</h1>
47+
<button onClick={this.handleAdd}>add</button>
48+
<button onClick={this.handleAlert}>alert</button>
49+
</div>
50+
);
51+
}
52+
}

src/tasks/task2.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import React from "react"
2+
3+
const { useState, useEffect } = React
4+
5+
function Demo() {
6+
const [count, setCount] = React.useState(0)
7+
8+
useEffect(() => {
9+
const id = setInterval(() => {
10+
setCount(count + 1)
11+
}, 2000)
12+
13+
return () => {
14+
clearInterval(id)
15+
}
16+
}, [])
17+
18+
return <div>Count: {count}</div>
19+
}
20+
21+
export { Demo }

0 commit comments

Comments
 (0)