你想要请求一个功能还是报告一个bug?
我想报告一个bug。
当前的行为是什么?
数值输入字段在几次情况下意外地被清空。
如果当前行为是一个bug,请提供重现步骤,如果可能的话,提供问题的最小演示。如果你能运行你的代码并且它除了React之外没有其他依赖关系,那么你的bug将得到更快的修复。请粘贴以下链接到你的JSFiddle( https://jsfiddle.net/Luktwrdm/ )或CodeSandbox( https://codesandbox.io/s/new )示例:
1.打开 this sandbox
1.在字段中输入“12.”,带有尾随的小数分隔符
1.取消焦点
1.在字段值后附加“.”以查看“12..”
1.再次取消焦点并查看数字完全消失
预期的行为是什么?
类似于不受控输入的工作方式(删除 value
属性,然后重复上述步骤),输入不应在失去焦点时被清除。
这个问题影响了哪些版本的React,以及哪个浏览器/操作系统?在之前的React版本中是否也存在这个问题?
我正在使用React 16.12.0,并在使用最新版本的Chrome和iOS Safari时遇到了相同的行为。关于这个bug,我没有使用过之前的React版本的经验。
9条答案
按热度按时间ncecgwcz1#
我认为这是HTML输入元素的功能,因为您输入的不是数字,所以输入的内容应该是干净的。
mfuanj7w2#
这不是React的行为,而是来自浏览器。
e5njpo683#
这不是浏览器的bug。我刚刚用完全相同的代码设置了一个沙箱,但是使用了Preact而不是React:https://codesandbox.io/s/objective-antonelli-o0f2x
输入 "12." -> 失去焦点 -> 追加 "." -> 失去焦点在Preact中运行正常,但React意外地清除了输入框。
bvpmtnay4#
一些调查引导我来到了 29d9710 ,这使我来到了这里。按照这个逻辑,这绝对是个错误,而且似乎与在
input[type=number]
发生时不检查有效性的特殊情况有关。话虽如此,当 #13526 中所做的更改不再处于功能标志(
disableInputAttributeSyncing
)下时,这个问题就会消失。我通过修改我的react-dom
副本来检查这一点,但你可能也可以使用设置为true
的标志构建 react 。xam8gpfp5#
这个问题已经被自动标记为过时,因为它最近没有活动。如果不再发生活动,它将被关闭。感谢您的贡献。
wb1gzix06#
关闭长时间不活跃的问题。如果此问题仍在最新版本中存在,请创建一个带有最新信息的新问题。谢谢!
6pp0gazn7#
关闭长时间不活跃的问题。如果此问题仍在最新版本中存在,请创建一个带有最新信息的新问题。谢谢!
qhhrdooz8#
这可能仍然是一个bug。
bwitn5fc9#
有人对在
fixtures/dom
上添加一个用于追踪此问题的固定装置感兴趣吗?