antd的input的value和defaultValue区别

1. react通过state 保存可变状态的值,只能通过 setState()来更新

2. html中,表单元素(乳 input、textarea、select)通常自己维护state,并且根据用户输入进行更新

3.俩者结合起来,使react的state成为 ‘唯一数据源’,被react以这种方式控制的表单输入元素叫做 受控组件

4. 非受控组件就是 原生dom中的value属性

5.

非受控组件这么写:

<input type="text" defaultValue="a" />

这个 defaultValue 其实就是原生DOM中的 value 属性。

这样写出的来的组件,其value值就是用户输入的内容,React完全不管、也管不到输入的过程。

而受控组件是这么写的:

<input type="text" value={this.state.name} onChange={this.handleChange} />
handleChange: function(e) {
  this.setState({name: e.target.value});
}

value属性不再是一个写死的值,他是 this.state.name,而 this.state.name 是由 this.handleChange 负责管理的。 

这个时候实际上 input 的 value 根本不是用户输入的内容。而是onChange 事件触发之后,由于 this.setState 导致了一次重新渲染。

同时,React会优化这个渲染过程,实际上它仍然是通过设置input的value来实现的。

对比受控组件和非受控组件的输入流程:

  • 非受控组件: 用户输入A => input 中显示A
  • 受控组件: 用户输入A => 触发onChange事件 => handleChange 中设置 state.name = “A” => 渲染input使他的value变成A

正式因为这样,使得 React 的 state 成为唯一数据源。对于受控组件来说,输入的值始终由 React 的 state 驱动。

所以官方强烈推荐使用受控组件,因为它能更好的控制组件的生命流程。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值