reactjs 无法将转换添加到React中的选择框

nmpmafwu  于 2023-02-22  发布在  React
关注(0)|答案(1)|浏览(114)

我有一个输入字段,上面有一个箭头onClick,它显示了一个列表框,我想在打开和关闭它时向这个选择框添加一个转换,但什么也没做。

.combobox-options {
  position: absolute;
  margin: 0;
  padding: 0;
  list-style: none;
  max-height: 15em;
  overflow-y: auto;
  overscroll-behavior: contain;
  width: 100%;
  left: 0;
  top: calc(100% + 0.25em);
  z-index: 100;
  transition: all 0.5s;
}
const [isOpen, setIsOpen] = useState(false);

    <input role="combobox"  className="combobox-input"/>
    <button
        className={clsx("arrow", isOpen && "down")}
        onClick={() => setIsOpen(!isOpen)}>
    </button>
    {isOpen && (
       <ul
          id="combobox-listbox"
          role="listbox"
          className={clsx("combobox-options")}
        >
            {options?.map((option: any, index: any) => {
              return (
                <li>...</li>
              );
            })}
        </ul>
    )}
waxmsbnn

waxmsbnn1#

当您使用javascript来显示和隐藏ul元素时,不能使用css。请从ul元素周围删除isOpen,并使用它在CSS类之间切换。
使用下面的示例作为更改结构的辅助对象。

className={clsx("combobox-options", !isOpen && "hide")}
.combobox-options {
  /* position: absolute; */
  margin: 0;
  padding: 0;
  list-style: none;
  height: 15em;
  overflow: hidden;
  overscroll-behavior: contain;
  width: 100%;
  left: 0;
  top: calc(100% + 0.25em);
  z-index: 100;
  transition: all 0.5s ease-in-out;
}

.hide {
  height: 0;
  visibility: hidden;
}

相关问题