MUI TextField onChange触发自定义逻辑时如何保留默认输入行为
MUI TextField非受控模式下绑定自定义onChange逻辑的方法
你当前的写法本身就可以正常运行,不需要额外调用任何类似continueDefault()的方法来恢复默认输入行为。
- MUI的
TextField在不传入value属性时,默认就是非受控输入组件,原生的输入、文本追加逻辑是组件内置的,只要你不在onChange回调里主动调用e.preventDefault()拦截事件,自定义逻辑和原生输入行为完全不会冲突。 - 你只需要把自定义的
something()逻辑直接写在onChange回调里即可,不需要用state存储输入值,组件会正常响应用户的所有输入操作:
<TextField onChange={(e)=>{ something(e.target.value) // 不需要额外操作,组件会自动处理输入内容的更新 }}/>
常见的输入失效踩坑点
如果出现输入内容不更新的情况,只需要检查两个问题:
- 是否在
onChange回调里主动执行了e.preventDefault(),拦截了原生输入事件 - 是否给组件传入了
value属性,却没有配套编写更新value的逻辑,把组件强行变成了受控模式
如果需要给非受控的TextField设置初始值,使用defaultValue属性即可,不要用value属性:
<TextField defaultValue="初始输入内容" onChange={(e) => { something(e.target.value) }} />
内容的提问来源于stack exchange,提问作者Abraham
相关产品推荐
相关产品推荐

