Ant Design - 在选择中搜索键和值

Bun*_*bit 6 javascript reactjs antd

如果我有一个带有显示名称(例如“John Smith”)和用户名(例如“johsmi”)的用户对象,我该如何搜索显示名称和用户名?

这个例子只会搜索用户名,即它会找到“johsmi”,而不是“Smith”:

<Select
  showSearch={true}
  optionFilterProp="children"
  placeholder="Select account"
>
  {users.map(user => (
    <Select.Option value={user.name}>
      {user.displayName}                        
    </Select.Option>
  ))}
</Select>
Run Code Online (Sandbox Code Playgroud)

我最终在 key 属性中添加了显示名称以使其可搜索,但我想知道这是否是推荐的方法:

<Select.Option key={user.displayName} value={user.name}>
  {user.displayName}                        
</Select.Option>
Run Code Online (Sandbox Code Playgroud)

raf*_*lho 8

你可以使用filterOption道具

  const person = [{
    username: 'jstuart123',
    displayName: 'John Stuart'
  }]

  <Select
    showSearch
    optionFilterProp="children"
    onSearch={onSearch}
    filterOption={(input, option) =>  
      option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 
      || option.props.value.toLowerCase().indexOf(input.toLowerCase()) >= 0
    }
  >
    {person.map(p => <Option value={p.username}>{p.displayName}</Option>)}
  </Select>
Run Code Online (Sandbox Code Playgroud)

示例:https : //codesandbox.io/s/brave-bhabha-m5tuy


Hus*_*whw 8

最适合我,参考这个问题

<Select
  allowClear
  showSearch
  filterOption={(inputValue, option) =>
    option.children.join('').toLowerCase().includes(inputValue.toLowerCase())
  }
>
  {options.map(option=> (
    <Option key={option.id}>{option.name}</Option>
  ))}
</Select>
Run Code Online (Sandbox Code Playgroud)