React的受控组件用法详解!
一、受控组件是什么?
用state来获取和设置输入元素值的组件,称之为受控组件
。,
和
等标签都可用
value
属性,来实现受控组件。
二、有哪些受控组件?
1、input
- 阻止表单提交
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = { value: '' };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}handleChange(event) {
this.setState({ value: event.target.value });
}handleSubmit(event) {
alert('提交的名字: ' + this.state.value);
event.preventDefault();
}render() {
return (
);
}
}
- file类型input
// file类型的input,属性value是只读的,所以是非受控组件
- 多个input
// 多个input时,设置下name属性,即可动态操作,无需硬编码
class Reservation extends React.Component {
constructor(props) {
super(props);
this.state = {
isGoing: true,
numberOfGuests: 2
};
this.handleInputChange = this.handleInputChange.bind(this);
}handleInputChange(event) {
const target = event.target;
const value = https://www.it610.com/article/target.type ==='checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value
});
}render() {
return (
);
}
}
2、textarea 用value属性来设置textarea的文本内容:
class EssayForm extends React.Component {
constructor(props) {
super(props);
this.state = {
value: '请撰写一篇关于你喜欢的 DOM 元素的文章.'
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}handleChange(event) {
this.setState({ value: event.target.value });
}handleSubmit(event) {
alert('提交的文章: ' + this.state.value);
event.preventDefault();
}render() {
return (
);
}
}
3、select 【React的受控组件用法详解!】传统HTML中,用
selected
来设置选中项,而在React中使用 value
属性:// HTML中使用selected属性
< select >
// React中使用value属性
class FlavorForm extends React.Component {
constructor(props) {
super(props);
this.state = { value: 'coconut' };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}handleChange(event) {
this.setState({ value: event.target.value });
}handleSubmit(event) {
alert('你喜欢的风味是: ' + this.state.value);
event.preventDefault();
}render() {
return (
);
}
}
// 传递数组给value属性,表示select标签,选中多个选项
参考文档
- React的受控组件用法详解!
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量