首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reactjs中的下移-菜单下拉菜单仅显示选定的项

Reactjs中的下移-菜单下拉菜单仅显示选定的项
EN

Stack Overflow用户
提问于 2019-05-14 17:24:23
回答 1查看 775关注 0票数 0

我在使用Downshift时遇到了问题,一开始我有所有的菜单选项,但是一旦我选择了一个选项,那就是我下一次点击菜单时唯一显示在菜单中的选项。

这是我目前的代码,有没有反馈是什么原因造成的?

代码语言:javascript
复制
const dropdownItems = [
  { value: 'All' },
  { value: 'Database A' },
  { value: 'Database B' },
  { value: 'Database C' },
  { value: 'Database D' },
];
return (
  <Downshift itemToString={item => (item ? item.value : '')}>
    {({
      getMenuProps,
      getItemProps,
      getToggleButtonProps,
      getRootProps,
      isOpen,
      inputValue,
      selectedItem,
      highlightedIndex,
    }) => console.log(
      selectedItem === null ? dropdownItems[0].value : selectedItem.value,
    ) || (
        <Container {...getRootProps()}>
          <button {...getToggleButtonProps()}>
            {isOpen
              ? selectedItem === null
                ? dropdownItems[0].value
                : selectedItem.value
              : selectedItem === null
                ? dropdownItems[0].value
                : selectedItem.value}
          </button>
          {isOpen ? (
            <Menu {...getMenuProps()}>
              {dropdownItems
                .filter(
                  item => !inputValue || item.value.includes(inputValue),
                )
                .map((item, index) => (
                  <Item
                    {...getItemProps({
                      key: item.value,
                      index,
                      item,
                      style: {
                        fontWeight:
                          index === highlightedIndex
                            ? 'bold'
                            : null,
                      },
                    })}
                  >
                    {item.value}
                  </Item>
                ))}
            </Menu>
          ) : null}
        </Container>
      )
    }
  </Downshift>
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-14 17:41:43

代码语言:javascript
复制
.filter(item => !inputValue || item.value.includes(inputValue),) 

为了解决这个问题,我删除了.filter,它只导致选择的值显示在下拉列表中。

这是更新后的菜单标记。

代码语言:javascript
复制
 <Menu {...getMenuProps()}>
     {dropdownItems.map((item, index) => (
        <Item
            {...getItemProps({
                  key: item.value,
                 index,
                   item,
                      style: {
                  fontWeight:
                   index === highlightedIndex
                    ? 'bold'
                    : null,
                       },
                        })}
              >
          {item.value}
         </Item>
         ))}
          </Menu>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56135603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档