Nano Hash - криптовалюты, майнинг, программирование

Выпадающее меню ClojureScript

У меня есть html-страница, содержащая панель навигации в верхней части экрана. На панели навигации у меня есть окно поиска, и я хочу, чтобы вы вводили это поле, нажимали Enter, и результаты отображались в виде раскрывающегося меню.

<li><input type="text" id="search-bar" placeholder="Search"></li>

Это поле ввода html-поиска. Я дал ему идентификатор search-bar, чтобы в конечном итоге создать раскрывающееся меню в ClojureScript.

(when-let [section (. js/document (getElementById "search-bar"))]
                (r/render-component [search-bar-component] section))

В настоящее время у меня есть форма поиска, которая выглядит следующим образом

(defn search-form
  []
  [:div
   [:p "What are you searching for? "
    [:input
     {:type :text
      :name :search
      :on-change #(do
                    (swap! fields assoc :search (-> % .-target .-value))
                    (search-index (:search @fields)))
      :value (:search @fields)}]]
   [:p (create-links @search-results)]])

(defn- search-component
  []
  [search-form])

Это мой search-component.

Я хочу, чтобы это произошло, когда вы вводите поле ввода на панели навигации (скажите «привет», он вызывает search-index из формы поиска с параметром, являющимся значением, которое вы вводите («привет»), а затем возвращает результаты как выпадающее меню ниже.

search-form прямо сейчас работает как форма на html-странице, где вы вводите текст в форму, а затем результаты отображаются ниже. Я хочу изменить его так, чтобы он находился на панели навигации, а не как отдельная страница, где форма ввода находится на панели навигации, а результаты отображаются ниже.

Как я должен изменить свою форму поиска, чтобы сделать это?

Я думаю, что я могу сделать что-то в этом духе

(defn search-bar-form
      []
      [:div
       [:input
        {:type :text
         :name :search
         :on-change #(do
                       (swap! fields assoc :search (-> % .-target .-value))
                       (search-index (:search @fields)))
         :value (:search @fields)}]
       [:p (create-links @search-results)]])

(defn- search-bar-component
       []
       [search-form])

Любая помощь приветствуется.

15.03.2017

Ответы:


1

re-com предоставляет компонент typeahead. Похоже, вы используете реагент, так что вы можете просто использовать его, в противном случае вы можете использовать его как вдохновение.

15.03.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..