react教程006-react高级
陨落的半神 2021-06-30 教程react
# context
当我们需要一个全局的数据时,简单的做法可以使用context
来实现。
import React, { Component, createContext } from 'react';
const UserName = createContext('张三')
class Comp1 extends Component {
constructor(props) {
super(props)
}
render () {
return (
<div>你好{this.context}</div>
);
}
};
Comp1.contextType = UserName
class App extends Component {
constructor(props) {
super(props)
}
render () {
return (
<UserName.Provider value="李四">
<Comp1 />
</UserName.Provider>
);
}
};
export default App;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# refs
一般情况下,我们只需要关注数据的变化,不需要关注dom元素。当有特殊需求的时候,需要获取dom元素,这种情况下我们可以使用refs
。
import React, { Component, createRef } from 'react';
const UserName = createContext('张三')
class Comp1 extends Component {
constructor(props) {
super(props)
}
render () {
return (
<div ref={this.props.selfRef}>你好</div>
);
}
};
class App extends Component {
constructor(props) {
super(props)
this.formRef = createRef();
}
handleClick (event) {
console.log(event)
console.log(this.formRef.current)
}
render () {
return (
<UserName.Provider value="李四">
<Comp1 selfRef={this.formRef} />
<button
onClick={() => this.handleClick()}
>
点击
</button>
</UserName.Provider>
);
}
};
export default App;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40