【问题标题】:Autocomplete Material UI search based on two attributes基于两个属性的自动完成 Material UI 搜索
【发布时间】:2021-09-02 14:16:04
【问题描述】:

我有这些数据:

const sample = [
    {hero: 'DARTH VADER', faction: 'EMPIRE'},
    {hero: 'LUKE SKYWALKER', faction: 'REBEL'},
    {hero: 'GREEDO', faction: 'BOUNTY HUNTER'},
];

使用自动完成,我可以通过 herofaction 属性搜索值,方法是在 getOptionLabel={(option) => {option.hero}}getOptionLabel={(option) => {option.faction}} 属性中分配其中一个属性。

但是我希望能够同时使用这两个属性进行搜索(键入 DARTH VADER 或 EMPIRE 将返回相同的结果)。

问题如下:

  1. 我可以使用单个自动完成来实现吗?
  2. 如果不是,我们可以使用切换来更改要在自动完成中查找的属性吗?

非常感谢

【问题讨论】:

    标签: reactjs autocomplete material-ui


    【解决方案1】:

    自动完成提供了filterOptions 属性。

    您可以使用它来提供像这样的自定义过滤器(这里是codesandbox):

    import React from 'react';
    import TextField from '@material-ui/core/TextField';
    import Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';
    
    const filterOptions = createFilterOptions({
      matchFrom: 'any',
      stringify: (option) => option.hero + option.faction,
    });
    
    export default function Filter() {
      return (
        <Autocomplete
          id="filter-demo"
          options={sample}
          getOptionLabel={(option) => option.hero}
          filterOptions={filterOptions}
          renderInput={(params) => <TextField {...params} label="Custom filter" variant="outlined" />}
        />
      );
    }
    
    const sample = [
      {hero: 'DARTH VADER', faction: 'EMPIRE'},
      {hero: 'LUKE SKYWALKER', faction: 'REBEL'},
      {hero: 'GREEDO', faction: 'BOUNTY HUNTER'},
    ];
    

    【讨论】:

    • 感谢您解决此问题
    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2020-06-11
    • 2015-08-27
    • 1970-01-01
    • 2017-02-08
    • 2023-03-24
    • 2016-11-12
    • 2018-12-07
    相关资源
    最近更新 更多