react-表单
宁静致远 7/19/2020 react
- 受控组件
- input textarea select 用 value
- checkbox radio 用 checked
# 受控组件--input框自己的状态被React组件状态控制
实现步骤 以获取文本框的值为例,受控组件的使用步骤如下:
- 在组件的state中声明一个组件的状态数据
- 将状态数据设置为input标签元素的value属性的值
- 为input添加change事件
- 在事件处理程序中,通过事件对象e获取到当前文本框的值(即用户当前输入的值)
- 调用setState方法,将文本框的值作为state状态的最新值
import React from "react";
class FormComponent extends React.Component {
constructor() {
super();
this.state = {
inputVal: "",
textareaVal: "",
selectVal: "",
checkboxVal: true,
radioVal: ''
};
}
handleChangeInput = (e) => {
this.setState({
inputVal: e.target.value,
});
};
handleChangeTextarea = (e) => {
this.setState({
textareaVal: e.target.value,
});
};
handelChangeSelect = (e) => {
this.setState({
selectVal: e.target.value,
});
};
handelChangeCheckbox = (e) => {
this.setState({
checkboxVal: !this.state.checkboxVal,
});
};
handelChangeRadio = (e) => {
this.setState({
radioVal: e.target.value
})
}
render() {
return (
<form>
<h1>{this.state.inputVal}</h1>
<div>
<label htmlFor="inputName">姓名</label>
<input
id="inputName"
value={this.state.inputVal}
onChange={this.handleChangeInput}
/>
</div>
<h1>{this.state.textareaVal}</h1>
<div>
<label htmlFor="textaraName">信息</label>
<textarea
id="textaraName"
value={this.state.textareaVal}
onChange={this.handleChangeTextarea}
/>
</div>
<h1>{this.state.selectVal}</h1>
<div>
<label>选择</label>
<select
value={this.state.selectVal}
onChange={this.handelChangeSelect}
>
<option value="zhangsan">张三</option>
<option value="lisi">李四</option>
<option value="wangwu">王五</option>
</select>
</div>
<h1>{this.state.checkboxVal.toString()}</h1>
<div>
<label>复选</label>
<input
type="checkbox"
checked={this.state.checkboxVal}
onChange={this.handelChangeCheckbox}
/>
</div>
<h1>{this.state.radioVal}</h1>
<div>
<label>单选 </label>
男<input
type="radio"
name="gender"
value='男'
checked={this.state.radioVal === '男'}
onChange={this.handelChangeRadio}
/>
女<input
type="radio"
name="gender"
value='女'
checked={this.state.radioVal === '女'}
onChange={this.handelChangeRadio}
/>
</div>
</form>
);
}
}
export const FormDemo = FormComponent;
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
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