我试图将Mui Select字段设置为与其最大的MenuItem一样宽。我曾尝试在Select上使用autoWidth
prop ,但这似乎没有改变任何东西。这里是一个代码沙箱,显示了这个问题(我还包括了一个TextField实现,它对我来说也有同样的问题);
https://codesandbox.io/s/mui-select-width-issue-xmsp5?file=/src/App.js
当在2个项目之间选择时,选择框的宽度会改变。我如何以编程方式将其固定为最大MenuItem的宽度?谢谢
2条答案
按热度按时间2eafrhcq1#
下面的代码使用以下方法:
MenuProps
使用keepMounted prop,这样即使菜单没有显示,也会呈现出来。如果没有这个,就没有任何简单的方法来确定它的宽度(通常是最宽项的宽度,只要合适)。Paper
元素的ref
属性传递一个回调函数。这允许在paper元素被呈现到DOM时通知代码。Select
的最小宽度字符串
https://codesandbox.io/p/sandbox/select-width-based-on-options-73dj92?file=%2Fsrc%2FDemo.tsx%3A10%2C55
或者,您可以将
TextField
与select
prop一起使用,然后由select
prop负责渲染FormControl
和InputLabel
元素。下面是使用TextField
而不是Select
的等效代码:型
https://codesandbox.io/p/sandbox/select-width-based-on-options-using-textfield-dqkk64?file=%2Fsrc%2FDemo.tsx%3A6%2C44的
kiayqfof2#
你试过在textfield组件中添加
fullWidth
属性吗?试着指定一个你想要的宽度的容器,输入将占据它的容器的整个宽度。* 或 * 你可以使用文本内样式覆盖textfield的宽度。如下所示:字符串
这个解决方案不是最好的,因为你必须根据菜单项静态地指定文本字段的最大宽度。