Выпадающий список Semantic-UI React — с помощью клавиши Enter

#reactjs #semantic-ui #semantic-ui-react

#reactjs #Semantic-ui #Semantic-ui-react

Вопрос:

У меня есть выпадающий компонент из semantic-ui React (https://react.semantic-ui.com/modules/dropdown /).

В настоящее время выпадающий список заполняется данными из вызова API, который возвращает:

 [
{href: 'https://blah blah.com',
text: 'text to display in the dropdown'}
]
  

В выпадающем списке отображается текст, который отображается в виде элементов, которые являются ссылками на внешние веб-страницы. Я могу ввести в поиск, щелкнуть по элементу в списке, и я перейду по ссылке для этого конкретного выпадающего списка. Что я хотел бы сделать, так это иметь возможность искать элемент и нажимать клавишу ввода, чтобы выбрать элемент и перейти по ссылке для этого элемента. Кто-нибудь знает, как я могу это сделать? В настоящее время нажатие Enter просто выбирает элемент и отображает его в раскрывающемся списке поиска, фактически не вызывая ссылку на элемент.

Вот мой код:

 import React, { Component } from "react";
import { Dropdown } from "semantic-ui-react";

const snippets = [];

class SearchableDropdown extends Component {
  state = {
    success: false,
    textValue: "",
    topic: this.props.topic,
    data: [],
  };


  async componentDidMount() {
    let topics = window.location.pathname;
      
    const res = await fetch(`http://localhost:5000/api${topics}`);

    const jsonData = await res.json();
    const info = jsonData;
    const data = Object.keys(info).map((key) => {
      return {
        topic: info[key].topic,
        card_title: info[key].card_title,
        card_subtitle: info[key].card_subtitle,
        card_gif: info[key].card_gif,
        card_link: info[key].card_link,
      };
    });
    this.setState({ data });

    let topicInfo = this.state.data;
    topicInfo.forEach((item) =>
      snippets.push({
        text: `${item.card_title} | ${item.card_subtitle}`,
        value: `${item.card_title} | ${item.card_subtitle}`,
        href: `${item.card_link}`,
      })
    );
    }
  }

  render() {
    let topic = this.props.topic;

    return (
      <Dropdown
        placeholder="Search Snippets"
        fluid
        search
        selection
        options={snippets}
        onChange={this.handleChange}
        style={{
          backgroundColor: "whitesmoke",
          border: "1px solid black",
          display: "block",
          margin: "auto",
          width: "50%",
          marginTop: "30px",
        }}
      />
    );
  }
}

export default SearchableDropdown;