reactjs React-Select与MUI可折叠面板冲突

e5njpo68  于 2023-01-12  发布在  React
关注(0)|答案(2)|浏览(130)

我被难住了。我做了很多谷歌搜索,也看了react-selectMaterial UI Accordion文档。以前似乎没有人遇到过这个问题,这让我很惊讶,因为这些都是非常流行的组件库。
我一直在使用**** 组件,没有问题,激活了isSearchable和isMulti属性。行为符合预期。当我在框中键入时,它会相应地自动过滤选项的下拉列表。
但是,只有当我将此组件放入MUI****组件的内容窗格中时,情况才会出现问题:用户在输入两个字符后的输入操作会导致选择小部件失去焦点,页面滚动到某个未知的锚点,用户输入的文本不会保留在选择框中,选项下拉列表甚至不会出现。即使选项列表中只有少量选项(例如5-10),也会出现此问题。
有人对这两个组件的交互性有任何经验吗?是否有一些组件属性切换我错过了?我猜 accordion 是以一种覆盖CreatableSelect行为的方式响应击键。

import MuiAccordion from "@mui/material/Accordion";
import MuiAccordionSummary from "@mui/material/AccordionSummary";
import MuiAccordionDetails from "@mui/material/AccordionDetails";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import CreatableSelect from "react-select/creatable";

const FilterBox = ({.... various props .... }) => {

  const Accordion = styled(MuiAccordion)(({ theme }) => ({
   
  }));
  const AccordionSummary = styled(MuiAccordionSummary)(({ theme }) => ({
  
  }));
  const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({
  

  }));

return (
<Accordion>
  <AccordionSummary
    expandIcon={<ExpandMoreIcon />}
    aria-controls="panel-candidates-content"
    id="panel-candidates-header"
  >Search Items
  </AccordionSummary>
  <AccordionDetails>
    <CreatableSelect
      instanceId={label}
      aria-label={label}
      styles={selectCustomStyles}
      options={showOptions}
      isSearchable
      isMulti
      value={value}
      filterOption={handleFilterOption} />
  </AccordionDetails>
</Accordion>
)

}
hs1ihplo

hs1ihplo1#

经过进一步调查,我发现问题出在风格上()函数。当我切换到较新的sxprop范例时,这个问题就消失了。我仍然不知道为什么要()会干扰用户交互。但考虑到这种方法已被弃用,我不想费心去弄清楚这个问题!只要切换到MUI "system",就可以开始了。

pinkon5k

pinkon5k2#

我也有同样的问题,但是我使用了从材质界面中选择。当我为选择设置属性disablePortal如“False”时,出现了这个问题。请尝试使用从材质界面中选择门户或仅门户。

<Select
   MenuProps={{
      disablePortal: true,
   }}> 
      <MenuItem value={10}>Ten</MenuItem>
      <MenuItem value={20}>Twenty</MenuItem>
      <MenuItem value={30}>Thirty</MenuItem>
</Select>

相关问题