React select ReactSelect输入框宽度计算不正确

React select ReactSelect输入框宽度计算不正确,react-select,React Select,当我在框中键入文本时,文本会向左移动,并切断左侧部分。如果我从盒子中取出标签并返回,右边的部分也会被切断 它的一个代码沙盒是 它过去工作得很好,我将一个旧版本与当前版本并排进行了比较。如果我在每个词中键入相同的词,则每个词的样式.宽度。例如,如果我在两个应用程序中都键入“abcdefg”,则旧版本的style.width为74px,而新版本的style.width仅为62px。计算此宽度的代码位于react input autosize中,并且在我的应用程序的好版本和坏版本之间,this.siz

当我在框中键入文本时,文本会向左移动,并切断左侧部分。如果我从盒子中取出标签并返回,右边的部分也会被切断

它的一个代码沙盒是

它过去工作得很好,我将一个旧版本与当前版本并排进行了比较。如果我在每个词中键入相同的词,则每个词的
样式.宽度
。例如,如果我在两个应用程序中都键入“abcdefg”,则旧版本的
style.width
为74px,而新版本的
style.width
仅为62px。计算此宽度的代码位于react input autosize中,并且在我的应用程序的好版本和坏版本之间,
this.sizer.scrollWidth
的值不同。我就是说不出是什么导致了它的不同


原因是宽度是根据隐藏的div计算的。隐藏的div中填充的文本与您在文本框中输入的值相同

此项的溢出设置为
滚动
,然后计算其宽度

现在,此宽度取决于
字体大小
。对于搜索文本框,文本的
字体大小
可能已被您更改,但sizer的
字体大小
仍然相同,这就是问题的原因。当我手动校正尺寸时,效果很好


我还没有深入CSS检查您在哪里做了更改,但这应该足以让您纠正这个问题

谢谢。我不完全理解为什么,但是将font size=20px从包含元素移动到react select的输入、选项和占位符组件可以修复它。我还尝试为react select的selectContainer和control组件设置它,但没有成功。可见输入元素继承了该值,但隐藏的sizer元素得到了错误的值16px。我不知道它在新的坏版本中从哪里得到了“16px”。在库中
var-inputStyles=this.input&&window.getComputedStyle(this.input)和之后的
复制样式(inputStyles,this.sizer)
用于复制输入文本框中的样式,但我在任何地方都找不到“16px”字体大小。可见输入为“20px”。隐藏的sizer是“16px”。没关系。只要它现在起作用,我就没事。