【问题标题】:Search multiple domains with material-ui autocomplete使用 material-ui 自动完成搜索多个域
【发布时间】:2020-08-14 06:31:31
【问题描述】:

我在 reactjs 中使用 material-ui / autoComplete。 在单个区域中搜索。如何让它搜索多个域。

所以我也想添加 customerSurname 字段。

在 customerName 字段上进行搜索。如何搜索 CustomerSurname 和 customerIdentityNo 字段?

https://ibb.co/qMjNz1d

 <Autocomplete
      id={'customer-search'}
      options={this.state.customerItems}
      getOptionLabel={(option) => option.customerName}
      renderOption={(option) => (
        <React.Fragment>
          <span> {option.customerIdentityNo}, </span>
          <span> {option.customerName} {option.customerSurname} </span>
        </React.Fragment>
      )}
      renderInput={(params) => (
        <TextField
          {...params}
          label="Search input"
          margin="normal"
          variant="outlined"
          InputProps={{
            ...params.InputProps,
            type: 'search'
          }}
        />
      )}
    />

【问题讨论】:

    标签: reactjs material-ui


    【解决方案1】:

    您可以使用fuse.js 之类的库对您收藏中的任何字段执行搜索。他们有一个demo page,您可以在那里试用。

    但是,您必须弄清楚如何与您正在使用的自动完成库集成。

    【讨论】:

      【解决方案2】:

      Ciao,要组合选项,我发现的唯一方法是在 options 中创建一个包含您想要的所有值的数组。比如:

      <Autocomplete
            id={'customer-search'}
            options={this.state.customerItems.map((option) => return option.customerIdentityNo + "," + option.customerName + "," option.customerSurname)}
            getOptionLabel={(option) => option.customerName}
            renderOption={(option) => (
              <React.Fragment>
                <span> {option.split(",")[0]}, </span>
                <span> {option.split(",")[1]} {option.split(",")[2]} </span>
              </React.Fragment>
            )}
            renderInput={(params) => (
              <TextField
                {...params}
                label="Search input"
                margin="normal"
                variant="outlined"
                InputProps={{
                  ...params.InputProps,
                  type: 'search'
                }}
              />
            )}
          />
      

      通过这种方式,您可以将选项创建为字符串。然后在renderOption 上,您可以拆分此字符串并以自定义方式显示元素。

      【讨论】:

      • ibb.co/CJsZs3Q 是的,它起作用了。但名字和姓氏开始融合在一起。
      • 是的,不幸的是,这是副作用。我没有找到任何其他方式在单个AutoComplete 上有多个选项。很抱歉没有提供更多帮助。
      • mate 修复了。使用当前代码,但如何在第二个字段中搜索
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2022-09-30
      • 2020-06-11
      • 2017-02-22
      • 2021-09-06
      • 2023-03-24
      • 2016-11-12
      相关资源
      最近更新 更多