如何更改 Material UI 自动完成弹出窗口的宽度

2023-12-28

当使用Select https://material-ui.com/api/select/在 Material-UI 中,有一个名为“autoWidth”的道具,它设置弹出窗口的宽度以匹配菜单内项目的宽度。

是否有类似的选项自动完成 https://material-ui.com/components/autocomplete/成分?

我想要实现的是,TextField 的宽度独立于菜单的宽度,并且菜单的宽度由菜单项决定,而不是由硬编码的“宽度”决定。

到目前为止,我设法找到的是使用类向“纸张”组件提供宽度的选项(请参见下面的代码),但它独立于实际项目的宽度,并且纸张的位置不会调整为留在内部窗户。

const styles = (theme) => ({
  paper: {
    width: "450px"
  }
});

function ComboBox(props) {
  return (
    <Autocomplete
      id="combo-box-demo"
      options={top100Films}
      classes={{
        paper: props.classes.paper
      }}
      getOptionLabel={(option) => option.title}
      style={{
        width: 300,
        paddingLeft: "100px"
      }}
      renderInput={(params) => (
        <TextField {...params} label="Combo box" variant="outlined" />
      )}
    />
  );
}

我想要实现的行为与但使用自动完成组件。请注意,弹出菜单的宽度取自菜单项,而选择组件的宽度是硬编码的。


要拥有基于菜单本身内部元素的动态菜单,您需要自定义自动完成的PopperComponent财产是这样的:

  1. 定义一个自定义Popper:

    const PopperMy = function (props) {
       return <Popper {...props} style={styles.popper} placement="bottom-start" />;
    };
    
  2. In Popper样式,将宽度设置为“fit-content”:

    const styles = (theme) => ({
       popper: {
          width: "fit-content"
       }
    });
    
  3. 传递组件PopperMy自动完成:

    <Autocomplete
       PopperComponent={PopperMy}
       ...  
    />
    

Here https://codesandbox.io/s/material-demo-forked-b927n?file=/demo.js你的codesandbox修改了吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改 Material UI 自动完成弹出窗口的宽度 的相关文章

随机推荐

  • 如何影响部分卷页呈现的模态视图的大小?

    我需要为应用程序中的视图提供一些附加数据 并且我想使用部分页面卷曲来实现它 就像 Google 地图应用程序使用部分页面卷曲进行设置一样 我遇到的问题是所呈现的视图占据了整个屏幕 如何调整所呈现视图的大小 理想情况下 我希望它像 Googl
  • 如何渲染 OSM 瓷砖

    我想设置一个瓷砖服务器 我在网上找到了一些文档并遵循本教程 https switch2osm org serving tiles manually building a tile server 14 04 现在看来我有一个配置良好的服务器
  • JavaScript atan2() 函数未给出预期结果

    通常 极坐标从 0 到 到 2 实际上就在 2 之前 因为它又等于 0 然而 当使用 JavaScriptatan2 函数 我得到了一个不同的 奇怪的范围 Cartesian X Cartesian Y Theta 1 0 0 0 1 1
  • 运行我自制的旋转算法时得到不正确的图片输出

    为了更好地理解图像处理的工作原理 我决定创建自己的图像旋转算法 而不是使用 cv2 rotate 但是 我遇到了奇怪的图片裁剪和像素错位问题 我认为这可能与我的填充有关 但也可能有其他错误 import cv2 import math im
  • 在 MATLAB 中循环内部绘图

    我正在做这样的事情 a 1 100 for i 1 100 plot 1 i a 1 i end 我的问题是 直到循环完成后才会显示绘图 如何在每次迭代中显示 更新绘图 Use DRAWNOW http www mathworks com
  • 使用 Aurelia 的 Fetch Client 时 Azure Translator API(认知服务)上出现 CORS 错误

    我尝试使用来自 Windows Azure 的非常基本的 API 调用来翻译一些文本 他们给出了一个快速入门示例代码 https learn microsoft com en us azure cognitive services tran
  • WPF - 应用前景时默认按钮禁用样式

    按钮应用了一个Foreground当它被启用时 如果设置为Disabled 则默认Button为DisabledForeground需要申请
  • 按值传递 vs 按引用传递(两者之间内存空间分配的差异)

    在 C 中 我们使用引用传递 我们引用从参数传递到函数参数的任何地址 这本质上是一个指针 对吗 因此 虽然它们本质上是相同的东西 别名等等 但指针不是也需要内存空间吗 因此 无论我们在参数函数中拥有什么 都不应该让我们调用 B 指向所传递的
  • 多维数组符号之间的差异(object[][] 和 object[])

    我想知道在 C 中定义多维数组的两种方法有什么区别 您可以使用object and object 处理多维数组 功能上有区别吗 The object 是数组数组的表示法 第二个object 是一个二维数组 主要区别是第一个可以包含不同长度的
  • angularJS ng-model 输入类型号到 rootScope 未更新

    我的输入类型编号设置为
  • C# Decimal.GetHashCode() 和 Double.GetHashCode() 相等

    为什么会这样17m GetHashCode 17d GetHashCode m 十进制 d 双精度 另外 正如预期的那样17f GetHashCode 17d GetHashCode f 浮点数 对于 net3 5 和 net4 0 来说似
  • CSS悬停图像位置更改

    我确信这是超级愚蠢的事情 但现在我已经被困了一段时间 所以 我在网站上有图像 我希望它们在悬停时稍微移动 所以我在 HTML 中有 a href someaddress img class thumb src somefile a 在 CS
  • Dart SDK未配置

    我安装了 Flutter 并设置了 Android Studio 然后我在 GitHub 上克隆了一个 flutter 的示例 https github com flutter flutter https github com flutte
  • Linux 中的 Qt 线程问题

    我在我的项目中使用 Qt 进行开发已经有一段时间了 我们开始转向更加面向线程的设计 在将一些 GL 渲染小部件移动到其他线程后 我发现了一些非常奇怪的行为 看起来 如果 GL Widget 在接受用户输入的小部件 例如 QTextEdit
  • Android:如何加载PDF?

    有没有办法从浏览器或 WebView 中的 Asset URL 或任何其他方式加载 PDF 文件 目前还没有本地方法可以做到这一点 但是 您可以编写自己的 pdf 查看器活动 另外 请查看复制Go阅读器 http www cerience
  • 在 git 交互式变基期间添加了新文件,变基中止,新文件丢失

    我之前在几个节点上提交了 git rebase i 我添加了一些我打算添加到该提交中的新文件 看起来我在错误的节点上 所以我立即执行了 git rebase abort 这些新文件现在完全消失了 在引用日志中 看起来像是发出了删除命令 删除
  • Telegram markdown 语法:粗体 * 和 * 斜体? (2018年9月)

    通过查看Telegram 的 Markdown 语法 Wiki 页面 https sourceforge net p telegram wiki markdown syntax 创建文本应该相对容易粗体和斜体 在那里 它说 this is
  • Vuex Store 模块访问状态

    我想知道如何从另一个文件访问模块存储 状态 到目前为止 这是我的代码 store index js import Vuex from vuex import categories from modules categories Vue us
  • 允许在子命令后使用 argparse 全局标志

    我正在使用 argparse 构建带有子命令的命令 mycommand GLOBAL FLAGS 子命令 FLAGS 我希望全局标志无论在子命令之前还是之后都可以工作 有没有一种干净的方法来做到这一点而不涉及重复代码 例如 parser a
  • 如何更改 Material UI 自动完成弹出窗口的宽度

    当使用Select https material ui com api select 在 Material UI 中 有一个名为 autoWidth 的道具 它设置弹出窗口的宽度以匹配菜单内项目的宽度 是否有类似的选项自动完成 https