问题描述
我有一个代码,试图隐藏手机的输入,因此看起来不错,这是格式化手机的方式:
onPhoneChange = (e) => {
const phone = e.target.value
if(!phone || phone.match(/^\((\d{2})\) (\d{5})\-(\d{4})$/)){
this.setState({ phone })
}else if(!phone || phone.match(/^\d{1,11}?$/)){
this.setState(() => ({ phone }))
if(this.state.phone || this.state.phone.match(/^\d{11}$/)){
let formattedPhone
let cleaned = ('' + phone).replace(/\D/g,'')
let match = cleaned.match(/^(\d{2})(\d{5})(\d{4})$/)
if (match) {
formattedPhone = `(${(match[1])}) ${match[2]}-${match[3]}`
}
this.setState({ phone: formattedPhone })
}
}
}
输入的值就是状态,就像上面那样设置,我发现setState函数是异步的,因此,当格式化输入时,它在外观上会发生变化,但在内部会发生冲突。在不使用外部模块的情况下该如何解决?
添加,这是输入:
<input
value={this.state.phone}
onChange={this.onPhoneChange}
/>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)