Material UI 自动完成自定义 renderInput

2024-03-10

我正在关注来自的各种例子https://material-ui.com/components/autocomplete/ https://material-ui.com/components/autocomplete/创建自定义自动完成。我正在尝试使用renderInput属性来使用自定义输入组件。我发现的所有示例都使用TextField组件,但我想使用常规input成分。

问题是,选项永远不会显示。我在这里创建了一个演示(交换renderInput with renderInputWORKING查看工作版本):

https://codesandbox.io/s/epic-johnson-oxy7b?file=/src/App.tsx https://codesandbox.io/s/epic-johnson-oxy7b?file=/src/App.tsx

与以下代码renderInput:

 const renderInput = (params: AutocompleteRenderInputParams) => {
    console.log(params);
    const { InputLabelProps, inputProps, InputProps } = params;
    return (
      <div>
        <label {...InputLabelProps}>foo</label>
        <input {...InputProps} {...inputProps} />
      </div>
    );
  };

我怎样才能使用<input />组件用于renderInput支撑<Autocomplete />?


UPDATE

Material-UI 4.10.1 版本(2020 年 6 月 1 日)在文档中包含了针对这种情况的新示例:https://material-ui.com/components/autocomplete/#custom-input https://material-ui.com/components/autocomplete/#custom-input.

拉取请求:https://github.com/mui-org/material-ui/pull/21257 https://github.com/mui-org/material-ui/pull/21257


文档中最有用的示例是自定义自动完成示例 https://material-ui.com/components/autocomplete/#customized-autocomplete它使用InputBase代替TextField。该示例包含以下代码renderInput:

         renderInput={(params) => (
            <InputBase
              ref={params.InputProps.ref}
              inputProps={params.inputProps}
              autoFocus
              className={classes.inputBase}
            />
          )}

The InputProps传递给TextField放置在包裹的 div 上<input>,所以大部分道具都不适合直接放在<input>像你一样的元素。在上面文档示例的代码中,您可以看到它只使用了其中的一项内容params.InputProps哪一个是ref。这个参考是用于控制锚元素 https://github.com/mui-org/material-ui/blob/v4.10.0/packages/material-ui-lab/src/Autocomplete/Autocomplete.js#L421对于选项列表框。参考文献也是放置在<input> itself https://github.com/mui-org/material-ui/blob/v4.10.0/packages/material-ui-lab/src/useAutocomplete/useAutocomplete.js#L936,但是那个ref用于非常不同的目的。在您的代码中,只有其中一个引用被使用。

下面是一个工作示例(基于组合框示例 https://material-ui.com/components/autocomplete/#combo-box因为您的沙箱有很多与此问题不直接相关的其他自定义),使用<input>代替TextField:

import React from "react";
import Autocomplete from "@material-ui/lab/Autocomplete";

export default function ComboBox() {
  return (
    <Autocomplete
      id="combo-box-demo"
      options={top100Films}
      getOptionLabel={option => option.title}
      style={{ width: 300 }}
      renderInput={params => (
        <div ref={params.InputProps.ref}>
          <label {...params.InputLabelProps}>My Label </label>
          <input {...params.inputProps} autoFocus />
        </div>
      )}
    />
  );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Material UI 自动完成自定义 renderInput 的相关文章

随机推荐

  • 使 Linearlayout 可滚动而不使用 Scrollview

    我有一个 Linearlayout 我想使其可滚动而不使用 ScrollView 是否可以 任何建议将不胜感激 详细信息如下 如果我使用 ScrollView 包装 LinearLayout 那就可以了 但是当我在 LinearLayout
  • 如何在 Alamofire 中使用 NetworkReachabilityManager

    我想要类似的功能AFNetworking在 Objective C 中 在 Swift 中使用 Alamofire NetworkReachabilityManager Reachability detection AFNetworkRea
  • Ruby 使用什么哈希函数?

    Ruby 的哈希函数算法是什么 标准 Ruby 实现使用杂音哈希 http murmurhash googlepages com 对于某些类型 整数 字符串 来自 string c 1901 MurmurHash described in
  • _("text"),即下划线括号字符,有什么作用? [复制]

    这个问题在这里已经有答案了 在 C 代码中我遇到了这一点 test 它有什么作用 我试图自己查找它 但正如你可以想象的那样 搜索引擎不支持搜索 它正在调用名为的函数 例如 include
  • 依赖注入:海龟一路向下?

    所以我想知道单元测试如何处理外部依赖项 在这里和其他地方 我已经熟悉了依赖注入 以及它如何允许我们测试代码单元 A 但是 我对如何测试其他单元 B 和 C 感到困惑 这些单元现在拥有外部依赖项 以便它们可以将其注入到原始单元 A 中 例如
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Magento 新购物车属性

    嗨 我面临的问题一开始似乎很简单 但现在变成了一场真正的噩梦 我被要求向所有产品添加一个属性 即点 使用管理面板非常简单地完成 并将其总计作为可以设置规则的购物车属性 我非常肯定购物车属性是在以下位置定义的 class Mage Sales
  • 实例化接口而不使用实现类

    我有一个接口 称为 Planet 其实现类受到保护 并且我无法更改其访问修饰符 但是 我需要在主类中调用实现类的方法 例如 在实现类中 我有 public void orbit distance 我努力了 private Planet pl
  • 因此更改了 Git 的默认编辑器,现在我如何从 Git bash 调用它?

    我通过将以下内容应用于 Git 的全局配置来更改 Git 的默认编辑器 core editor C Program Files Notepad notepad exe multiInst notabbar nosession noPlugi
  • 如何删除CheckBox右侧不需要的空格?

    我正在研究自定义列表视图 我想展示一个CheckBox在自定义视图中 没有文字说明CheckBox 我发现它的右侧总是有一些空格CheckBox 这是我的布局 xml 文件
  • 使用 LINQ to SQL 时如何抽象出持久性代码?

    我喜欢 LINQ to SQL 但一直困扰我的是 在使用它时 我的存储库代码由 LINQ to SQL 框架生成 因此与 SQL Server 数据库紧密耦合 你们中是否有人以抽象 松散耦合的方式使用 LINQ to SQL 如果是 您是如
  • 当窗口顶部到达特定元素时将类添加到 DIV,并在未到达时将其删除

    我有一个 navigation在包装纸的顶部 我想添加一个 fixed类 当窗口顶部到达 bottomDIV 并在顶部时删除此类 bottom位于窗口范围内 它是在添加和删除 fixed 类之间切换 div div class naviga
  • “内存压力”是什么意思?

    通读一遍苔丝 费兰德斯的博客 https blogs msdn microsoft com tess 2008 04 17 how does the gc work and what are the sizes of the differe
  • 修改测试中的 Django 设置

    来自姜戈docs https docs djangoproject com en dev topics settings altering settings at runtime 您不应该在运行时更改应用程序中的设置 为了 例如 不要在视图
  • 带地图的“if”语句中的 Golang 语法

    我正在这里阅读教程 http www newthinktank com 2015 02 go programming tutorial http www newthinktank com 2015 02 go programming tut
  • 离子/云角 FacebookAuth 给出空错误

    我已将 ionic 云服务添加到我的应用程序中 并希望使用本机 FaceBook 身份验证 import FacebookAuth from ionic cloud angular this facebookAuth login 在 And
  • 如何制作可变参数 is_same?

    如何制作一个类模板来返回其任何可变参数类型是否等于第一种类型 我希望能够做到这一点 is same
  • Delphi 2006 - 优雅地终止线程并仍然触发 OnTerminate 处理程序的最佳方法是什么?

    我有一个线程有时会由于永远不会返回的 DLL 调用而冻结 我怀疑 在一般情况下 当您调用像 Indy 这样的阻塞例程时 是否有一种方法可以通过触发线程 OnTerminate 处理程序来从中恢复 如果我调用 TerminateThread
  • Material UI 自动完成自定义 renderInput

    我正在关注来自的各种例子https material ui com components autocomplete https material ui com components autocomplete 创建自定义自动完成 我正在尝试使