Material UI:React Autocomplete 组件(受控)和 disableCloseOnSelect

Posted

技术标签:

【中文标题】Material UI:React Autocomplete 组件(受控)和 disableCloseOnSelect【英文标题】:Material UI : React Autocomplete component (controlled) and disableCloseOnSelect 【发布时间】:2020-08-31 08:43:30 【问题描述】:

我在使用 Material UI 为 React.js 提供的 Autocomplete component 时遇到问题。

这是我的组件的样子:

<Autocomplete
        options=options
        value=value
        disableCloseOnSelect
        onChange=handleChange
        limitTags=4
        getOptionLabel=(option) => option.name 
        renderOption=(option,  selected ) => (
          <React.Fragment>
            <Checkbox
              icon=icon
              checkedIcon=checkedIcon
              className=classes.checkbox
              checked=selected
            />
            option.name
          </React.Fragment>
        )
        renderInput=(params) => (
          <TextField ...params  variant="outlined" label=label placeholder=label />
        )
        ...custom
      />

我无法让功能 disableCloseOnSelect 与受控组件一起运行,因为它不会阻止列表在选择后关闭...如果我删除道具 valueonChange 一切正常,但我的项目需要它们。

有没有人有同样的问题或发现我处理事情的方式有什么问题?

有一个问题似乎与我的here 相符。那样的话,会不会是bug?

【问题讨论】:

你能创建一个活生生的例子来说明这一点吗?例如,您可以使用codesandbox.io。 你找到解决办法了吗? 【参考方案1】:

这很可能是由于母组件重新渲染造成的。自动完成的状态需要本地化。 这是一个沙盒演示,说明了这带来的不同: https://codesandbox.io/s/priceless-wilson-zz59q?file=/src/App.js

它还具有性能优势。

【讨论】:

不要让你的答案依赖于外部信息。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 您好,感谢您的评论。这是我做的一个沙箱来演示效果。答案的关键部分就在那里:母组件重新加载,下拉列表显然呈现为关闭状态。

以上是关于Material UI:React Autocomplete 组件(受控)和 disableCloseOnSelect的主要内容,如果未能解决你的问题,请参考以下文章

在 Material-UI 中使用 React 的 'ref' 属性

Material Design UI素材库React版--定制

React + Material-UI |如何创建水平滚动卡片?

为 SelectField 显示空白菜单项的正确方法是啥(material-ui,react)

React Material-UI 网格系统 [重复]

React中Material-Ui中增加标签的问题