【react】关于表单的受控组件与非受控组件

处理表单输入有两种方式:受控组件和非受控组件

1.受控组件是什么?

input表单元素值是由React控制的。表单数据是由React组件来管理。
简单理解就是带有onchange函数用setstate更新数据的 就是非受控组件(个人理解)
例子:

  class Form extends Component {
  constructor() {
    super();
    this.state = {
      name: '',
    };
  }

  handleNameChange = (event) => {
    this.setState({ name: event.target.value });
  };

  render() {
    return (
      <div>
        <input
          type="text"
          value={this.state.name}
          onChange={this.handleNameChange}
        />
      </div>
    );
  }
}

2.非受控组件是什么?

运行在React体系之外的表单元素,表单数据是由Dom节点来控制。
简单理解就是需要用到ref来获取DOM元素的
例子:

  class Form extends Component {
  handleSubmitClick = () => {
    const name = this._name.value;
    // do something with `name`
  }

  render() {
    return (
      <div>
        <input type="text" ref={input => this._name = input} />
        <button onClick={this.handleSubmitClick}>Sign up</button>
      </div>
    );
  }
}

3.哪些特殊场景下应该使用哪种组件?

官网推荐使用:受控组件

但是的确使用非受控组件会更容易将真实的数据存储到Dom中,同时集成React和非React代码,减少工作量,快速编写

下面列出特殊场景下,应使用哪种组件 :参考文章
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值