屏蔽状态管理中的输入

问题描述

我有一个代码,试图隐藏手机的输入,因此看起来不错,这是格式化手机的方式:

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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...