【问题标题】:Is there anything like Material-UI Autocomplete freeSolo in the React-Admin AutocompleteInputReact-Admin AutocompleteInput 中是否有类似 Material-UI Autocomplete freeSolo 的东西
【发布时间】:2019-11-05 14:39:35
【问题描述】:

我正在使用 React-Admin,我知道 React-Admin 正在使用 Material-UI,但我找不到像 Material-UI Autocomplete freeSolo 这样的东西。实际上,我追求的是一种不会强迫我选择元素的 AutocompleteInput。 freeSolo 就是这样工作的。

我只是想确保如果这在 React-Admin 中不存在,那么我创建一个新元素。

目前,我知道我可以使用我的自定义选项来定义 AutocompleteInput,如下所示:

const choices = [
  { id: 123, first_name: 'Leo', last_name: 'Tolstoi' },
  { id: 456, first_name: 'Jane', last_name: 'Austen' },
];
const optionRenderer = choice => `${choice.first_name} ${choice.last_name}`;
<AutocompleteInput choices={choices} optionText={optionRenderer} />

但由于选择太多,我不得不从我的 RESTful Web 服务中获取数据。它也不允许我将自定义文本(列表中不存在的文本)放入文本输入中。我的意思是在自动完成建议消失后,文本输入被清除。

我尝试使用:

import Autocomplete from '@material-ui/lab/Autocomplete';

但“自动完成”不存在。 @material-ui/lab 仅包括 AutocompleteArrayInputAutocompleteInput。我还安装了@material-ui/core,但它不允许我使用它。

【问题讨论】:

  • 你好像漏掉了这个包,你用的是什么包管理器?
  • 我安装了@material-ui/core 并添加了Autocomplete。我也试过AutoComplete,但没用。

标签: reactjs npm material-ui


【解决方案1】:

AutoComplete 不是@material-ui/core 的一部分,它在@material-ui/lab,你需要安装它。

您还需要确保您拥有适当版本的@material-ui/lab

此解决方案因您用于安装的包管理器而异。

如果您使用的是纱线: 您可以升级到最新版本的软件包(那里会有一些重大更改)

yarn upgrade @material-ui/lab --latest

如果您使用的是 npm:

npm install @material-ui/lab@latest

确保您了解lab 的用法,在某些时候此功能将移至核心,您需要自行调整以适应它。您可能需要使用 latest 标志来强制包管理器更新并忽略重大更改。

【讨论】:

  • 谢谢。我安装了@material-ui/lab,它解决了我的问题。我正在使用npmnpm i @material-ui/lab 解决了这个问题。
  • 我试过了,但是 stackoverflow 阻止了我这个问题:meta.stackoverflow.com/questions/302885/…
【解决方案2】:

您不能使用 AutocompleteInput 做到这一点,因为它是一个仅限于过滤的组件。

关注documentation

提示:AutocompleteInput 是一个无状态组件,因此它只允许过滤选项列表,而不是扩展它。如果您需要根据 fetch 调用的结果填充选项列表(如果不能满足您的需要),则必须基于 material-ui 组件编写自己的 Input 组件。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多