【问题标题】:Can Autocomplete component have different value and option types?自动完成组件可以有不同的值和选项类型吗?
【发布时间】:2020-08-26 16:19:57
【问题描述】:

根据文档,Autocomplete 组件在选项和实际值之间没有区别。

我有一个选项列表作为带有 id 的对象。当我选择一个选项时,我想将其 id 作为一个值,而不是对象本身。另外,当我设置 Autocomplete 的值时,我只想传入 id。

有可能吗?

<Autocomplete
  options={[{id: 1, label: 'foo'}, {id: 2, label: 'bar'}]}
  value={1}
  onChange={(_, value) => { /* value should be number (id) */ }}
/>

更新:选项标签应保持可配置

【问题讨论】:

    标签: autocomplete material-ui


    【解决方案1】:

    Ciao,不幸的是,onChange 事件的值返回所选的options 之一。所以不可能只返回元素的一个属性。

    你唯一能做的就是拿value.id

    <Autocomplete
       options={[
          { id: 1, label: "foo" },
          { id: 2, label: "bar" }
       ]}
       getOptionLabel={(option) => option.label}    // this to show label on Autocomplete
       getOptionSelected={(option, value) => option.id === value.id}   // this to compare option on id value
       onChange={(event, value) => console.log(value.id)}  // here access to id property of value object
       ...
    />
    

    Here 一个代码框示例。

    【讨论】:

    • 感谢您的建议,在这种情况下,人们会将 id 视为选项标签,而不是实际的标签属性。我澄清了我的问题
    • @amankkg 我更新了我的答案(和代码框)。但我想你已经知道我写了什么:)
    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2021-02-16
    • 2014-12-16
    • 2021-07-10
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多