React 是一个用于构建用户界面的 JAVASCRIPT 库。
React 主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。
React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。
React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
React 特点
1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
可控自定义组件:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8" >
<title></title>
<script src= "js/react.js" ></script>
<script src= "js/react-dom.js" ></script>
<script src= "js/browser.min.js" ></script>
</head>
<body>
<script type= "text/babel" >
var Radio=React.createClass({
getInitialState: function (){
return {
value: this .props.defaultValue
};
},
handleChange: function (event){
if ( this .props.onChange){
this .props.onChange(event);
}
this .setState({
value:event.target.value
});
},
render: function (){
var children=[];
var value= this .props.value|| this .state.value;
React.Children.forEach( this .props.children, function (child,i){
var label=<label key={i}>
<input type= "radio" name={ this .props.name} value={child.props.value} checked={child.props.value==value} onChange={ this .handleChange}/>
{child.props.children}
<br/>
</label>;
children.push(label);
}.bind( this ));
return <span>{children}</span>;
}
});
var MyForm=React.createClass({
getInitialState: function (){
return ({my_radio: "B" });
},
handleChange: function (event){
this .setState({
my_radio:event.target.value
});
},
submitHandler: function (event){
event.preventDefault();
alert( this .state.my_radio);
},
render: function (){
return (
<form onSubmit={ this .submitHandler}>
<Radio value={ this .state.my_radio} name= "my_radio" onChange={ this .handleChange}>
<option value= "A" >First option</option>
<option value= "B" >Second option</option>
<option value= "C" >Third option</option>
</Radio>
<button type= "submit" >Speak</button>
</form>
)
}
});
ReactDOM.render(<MyForm></MyForm>,document.body);
</script>
</body>
</html>
|
不可控的自定义组件:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
<!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8" >
<title></title>
<script src= "js/react.js" ></script>
<script src= "js/react-dom.js" ></script>
<script src= "js/browser.min.js" ></script>
</head>
<body>
<script type= "text/babel" >
var Radio=React.createClass({
getInitialState: function (){
return {
value: this .props.defaultValue
};
},
handleChange: function (event){
if ( this .props.onChange){
this .props.onChange(event);
}
this .setState({
value:event.target.value
});
},
render: function (){
var children=[];
var value= this .props.value|| this .state.value;
React.Children.forEach( this .props.children, function (child,i){
var label=<label>
<input type= "radio" name={ this .props.name} value={child.props.value} checked={child.props.value==value} onChange={ this .handleChange}/>
{child.props.children}
<br/>
</label>;
children[ 'label' +i]=label;
}.bind( this ));
return <span>{children}</span>;
}
});
var MyForm=React.createClass({
handleSubmit: function (event){
event.preventDefault();
alert( this .refs.radio.state.value);
},
render: function (){
return (
<form onSubmit={ this .handleSubmit}>
<Radio ref= "radio" name= "my_radio" defaultValue= "B" >
<p value= "A" >First</p>
<option value= "B" >Second option</option>
<option value= "C" >Third option</option>
</Radio>
<button type= "submit" >Speak</button>
</form>
)
}
});
ReactDOM.render(<MyForm></MyForm>,document.body);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8" >
<title></title>
<script src= "js/react.js" ></script>
<script src= "js/react-dom.js" ></script>
<script src= "js/browser.min.js" ></script>
</head>
<body>
<script type= "text/babel" >
var Radio=React.createClass({
getInitialState: function (){
return {
value: this .props.defaultValue
};
},
handleChange: function (event){
if ( this .props.onChange){
this .props.onChange(event);
}
this .setState({
value:event.target.value
});
},
render: function (){
var children=[];
var value= this .props.value|| this .state.value;
React.Children.forEach( this .props.children, function (child,i){
var label=<label>
<input type= "radio" name={ this .props.name} value={child.props.value} checked={child.props.value==value} onChange={ this .handleChange}/>
{child.props.children}
<br/>
</label>;
children[ 'label' +i]=label;
}.bind( this ));
return <span>{children}</span>;
}
});
var MyForm=React.createClass({
handleSubmit: function (event){
event.preventDefault();
alert( this .refs.radio.state.value);
},
render: function (){
return (
<form onSubmit={ this .handleSubmit}>
<Radio ref= "radio" name= "my_radio" defaultValue= "B" >
<p value= "A" >First</p>
<option value= "B" >Second option</option>
<option value= "C" >Third option</option>
</Radio>
<button type= "submit" >Speak</button>
</form>
)
}
});
ReactDOM.render(<MyForm></MyForm>,document.body);
</script>
</body>
</html>
|
总结
以上所述是小编给大家介绍的ReactJS中的自定义组件实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:https://www.cnblogs.com/xsd1/archive/2019/11/23/11917746.html