react中value与defaultValue的区别

本文深入探讨了React中input组件的两种使用方式:非约束性组件通过defaultValue绑定初始值,适用于仅读取model值的场景;约束性组件通过value和onChange结合,实现实时双向数据绑定,适合需要动态更新model值的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常开发的过程中,我们经常会使用input输入框,有时会需要使用value绑定数据,针对这一点,react提出了一个概念,分为了约束性组件和非约束性组件。

之前正常使用的时候我们只需要这样写:

	<input value={绑定的数据} type='text'/>

在react中这样的写法会出现一个错误,提示你应该使用onChange来监听这个input或者使用defaultValue来绑定数据。这样可以消除这个错误。

那么当使用defaultValue的时候:

	<input  defaultValue={绑定的数据} type='text'/>

这个时候就是一个非约束性组件,其实就是原生DOM中的value属性,这样写出来的组件,其value值就是用户输入的内容,和react没有关系,完全不管输入的过程。

当使用onChange的时候:

	<input value={绑定的数据} type="text" onChange={this.handleChange}/>

这个时候就是一个约束性组件,这里value不再是写死的值,他是你所绑定的数据,绑定的数据是由this.handleChange负责管理的。这个时候实际上input的value根本不是用户输入的内容。而是onChange事件触发之后,由this.state导致了一次重新渲染,不过react会优化这个过程。

总结:

  1. 如果在使用input时只需要获取model里的值时,使用defaultValue就可以了。
  2. 如果需要获取model的值并且还需要改变它的时候,就需要使用value结合onChange事件就可以了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值