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