<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: molly_eee</title>
    <description>The latest articles on DEV Community by molly_eee (@eee_molly).</description>
    <link>https://dev.to/eee_molly</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F743369%2Fbe47b328-fadf-4860-9d35-3394764d3c84.jpg</url>
      <title>DEV Community: molly_eee</title>
      <link>https://dev.to/eee_molly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eee_molly"/>
    <language>en</language>
    <item>
      <title>Getting Started With the Yext Answers API in VueJS</title>
      <dc:creator>molly_eee</dc:creator>
      <pubDate>Thu, 26 May 2022 21:18:12 +0000</pubDate>
      <link>https://dev.to/yext/getting-started-with-the-yext-answers-api-in-vuejs-3f04</link>
      <guid>https://dev.to/yext/getting-started-with-the-yext-answers-api-in-vuejs-3f04</guid>
      <description>&lt;h2&gt;
  
  
  Integrating Yext Answers API with Vue.js
&lt;/h2&gt;

&lt;p&gt;The primary aim of this article is to show you how Yext Answers API can be integrated into a Vue.js app. The demonstration uses Vue 3, and &lt;a href="https://vitejs.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt; is used for scaffolding the app. The app is designed using &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;. Note, however, that neither Vite nor Tailwind is a requirement for the app.&lt;/p&gt;

&lt;p&gt;This example uses an Answers experience that can answer questions about how to make different beverages. Check out &lt;a href="https://hitchhikers.yext.com/?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;Yext Hitchhikers&lt;/a&gt;, where you can make a sandbox account to experiment with adding your own data.&lt;/p&gt;

&lt;p&gt;Now let's move on to integrating Yext Answers using Vue 3.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scaffolding a Vue 3 App and Installing Dependencies
&lt;/h3&gt;

&lt;p&gt;As mentioned, Vite is used to scaffold the application in this article. Vite is often the better alternative to frontend tools like Webpack, Rollup, and Parcel. For one, Vite provides a quick and easy-to-use environment that doesn’t require long builds to get started. For another, it also addresses the problem of slow server start and makes the server start faster. &lt;a href="https://vitejs.dev/guide/why.html" rel="noopener noreferrer"&gt;Vite documentation&lt;/a&gt; lays out more information about the benefits of using Vite.&lt;/p&gt;

&lt;p&gt;To scaffold a new Vue project using Vite, run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;npm&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="n"&gt;vite&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running the command, it'll ask you to specify a package name and the template you want to use. Select &lt;strong&gt;Vue&lt;/strong&gt; for the template, and it'll use Vue 3 by default. As the scaffolding process completes, enter &lt;code&gt;cd&lt;/code&gt; into the directory and run &lt;code&gt;npm i&lt;/code&gt; to install the dependencies. Then run the server with &lt;code&gt;npm run dev&lt;/code&gt;. Your server will start on localhost.&lt;/p&gt;

&lt;p&gt;The only necessary dependency needed for this article is the &lt;code&gt;@yext/answers-core&lt;/code&gt;. To install it, run the command &lt;code&gt;npm i @yext/answers-core&lt;/code&gt; in your terminal. Other than that, Tailwind CSS is used to design the app. To better understand how Tailwind can be added to this app, follow the &lt;a href="https://tailwindcss.com/docs/guides/vite" rel="noopener noreferrer"&gt;guide to installing Tailwind CSS with Vue 3 and Vite&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building a Universal Autocomplete Component
&lt;/h3&gt;

&lt;p&gt;This article will showcase how the Answers core SDK can be used.&lt;/p&gt;

&lt;p&gt;Create a new file called &lt;code&gt;UniversalAutocomplete.vue&lt;/code&gt; in the &lt;code&gt;components&lt;/code&gt; directory inside the &lt;code&gt;src&lt;/code&gt; folder. Before adding the universal autocomplete feature, you should first review the created file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-gray-50 min-w-screen min-h-screen flex justify-center py-10"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-lg relative space-y-3 text-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-extrabold text-lg"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Universal Autocomplete&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-gray-900"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        Type the name of a data to search(examples: "how", "cider", etc.)
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt;
        &lt;span class="na"&gt;v-model&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"searchTerm"&lt;/span&gt;
        &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Type here..."&lt;/span&gt;
        &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p-3 mb-0.5 w-full border border-gray-300 rounded"&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;
        &lt;span class="na"&gt;v-if&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"result.results !== undefined"&lt;/span&gt;
        &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;
          &lt;span class="na"&gt;w-full&lt;/span&gt;
          &lt;span class="na"&gt;rounded&lt;/span&gt;
          &lt;span class="na"&gt;bg-white&lt;/span&gt;
          &lt;span class="na"&gt;border&lt;/span&gt; &lt;span class="na"&gt;border-gray-300&lt;/span&gt;
          &lt;span class="na"&gt;px-4&lt;/span&gt;
          &lt;span class="na"&gt;py-2&lt;/span&gt;
          &lt;span class="na"&gt;space-y-1&lt;/span&gt;
          &lt;span class="na"&gt;absolute&lt;/span&gt;
          &lt;span class="na"&gt;z-10&lt;/span&gt;
          &lt;span class="na"&gt;drop-shadow-md&lt;/span&gt;
        &lt;span class="err"&gt;"&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"results"&lt;/span&gt;
      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"px-1 pt-1 pb-2 font-bold border-b border-gray-200"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Showing &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; results
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;
          &lt;span class="na"&gt;v-for&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r in result.results"&lt;/span&gt;
          &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r.id"&lt;/span&gt;
          &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"selectResult(r.value)"&lt;/span&gt;
          &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cursor-pointer hover:bg-gray-100 p-1"&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;
        &lt;span class="na"&gt;v-if&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"selectedResult.length"&lt;/span&gt;
        &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg pt-2 z-0 grid grid-cols-1 md:grid-cols-2"&lt;/span&gt;
      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;
          &lt;span class="na"&gt;v-for&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r in selectedResult"&lt;/span&gt;
          &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r.id"&lt;/span&gt;
          &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;
            &lt;span class="na"&gt;inline-block&lt;/span&gt;
            &lt;span class="na"&gt;bg-gray-200&lt;/span&gt;
            &lt;span class="na"&gt;rounded-md&lt;/span&gt;
            &lt;span class="na"&gt;px-3&lt;/span&gt;
            &lt;span class="na"&gt;py-1&lt;/span&gt;
            &lt;span class="na"&gt;text-gray-700&lt;/span&gt;
            &lt;span class="na"&gt;mr-2&lt;/span&gt;
            &lt;span class="na"&gt;mb-2&lt;/span&gt;
          &lt;span class="err"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-lg font-semibold underline text-blue-600"&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;v-html&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r.description"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
import &lt;span class="si"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;watchEffect&lt;/span&gt; &lt;span class="si"&gt;}&lt;/span&gt; from "vue";
import &lt;span class="si"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;provideCore&lt;/span&gt; &lt;span class="si"&gt;}&lt;/span&gt; from "@yext/answers-core";

const core = provideCore(&lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;4be28826989e90232722e9bf2769fbf2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;experienceKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cpg-beverages&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;experienceVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PRODUCTION&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;);


export default &lt;span class="si"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;searchTerm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;selectedResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;searchResults&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;watchEffect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;searchTerm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;universalAutocomplete&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;searchTerm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;results&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;block&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;selectResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;searchTerm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;universalSearch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;ansArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
      &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;verticalResults&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;ansArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nx"&gt;selectedResult&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ansArr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ansArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;results&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;searchTerm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;searchResults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;selectResult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;selectedResult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Focusing on the &lt;code&gt;script&lt;/code&gt;, the first step is to import the necessary objects. The &lt;code&gt;ref&lt;/code&gt; and &lt;code&gt;watchEffect&lt;/code&gt; are imported from &lt;code&gt;vue&lt;/code&gt;, followed by &lt;code&gt;provideCore&lt;/code&gt;, which is imported from &lt;code&gt;@yext/answers-core&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The Answers Core is then initialized in the &lt;code&gt;core&lt;/code&gt; variable. The &lt;code&gt;provideCore&lt;/code&gt; function takes a &lt;a href="https://github.com/yext/answers-core/blob/master/docs/answers-core.answersconfig.md?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;&lt;code&gt;AnswersConfig&lt;/code&gt;&lt;/a&gt; object as a parameter that needs to include an apiKey, experienceKey, and locale.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡&lt;br&gt;
If you're using a Yext sandbox account, you'll also need to pass the &lt;a href="https://hitchhikers.yext.com/community/t/best-practice-for-developing-against-answers-headless-react-and-hh-sandbox/3877?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;sandbox endpoints&lt;/a&gt; to Answers Core.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;code&gt;setup&lt;/code&gt; script is the entry point for using the &lt;a href="https://vuejs.org/api/composition-api-setup.html" rel="noopener noreferrer"&gt;composition API&lt;/a&gt;. Inside the &lt;code&gt;setup&lt;/code&gt; function, the &lt;code&gt;searchTerm&lt;/code&gt; value, the &lt;code&gt;selectedResult&lt;/code&gt; value and the &lt;code&gt;result&lt;/code&gt; value are initialized using &lt;code&gt;ref&lt;/code&gt;. The next step is to create a function that will return the search results. The function is named &lt;code&gt;searchResults&lt;/code&gt;, and it uses the &lt;code&gt;watchEffect&lt;/code&gt; hook. The &lt;code&gt;watchEffect&lt;/code&gt; hook is introduced in the Vue 3 composition API. This &lt;a href="https://vuejs.org/api/reactivity-core.html#watcheffect" rel="noopener noreferrer"&gt;watchEffect hook&lt;/a&gt; runs a function immediately while reactively tracking its dependencies. &lt;/p&gt;

&lt;p&gt;Because the API call is asynchronous, &lt;code&gt;async-await&lt;/code&gt; is used. The first step inside this function is to check if the &lt;code&gt;searchTerm&lt;/code&gt; is empty. The &lt;code&gt;searchTerm&lt;/code&gt; is bound with the input field using &lt;code&gt;v-model= "searchTerm"&lt;/code&gt;. If the input field is empty, the result is assigned to an empty array. Otherwise, the code moves forward.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;answers-core&lt;/code&gt; library uses the &lt;code&gt;universalAutocomplete&lt;/code&gt; method to get the autocomplete results. The process takes an object as a parameter where the only required parameter is the &lt;code&gt;query&lt;/code&gt;. The &lt;code&gt;searchTerm&lt;/code&gt; value, received from the input field is passed in the &lt;code&gt;query&lt;/code&gt; key. The result returned from the SDK is stored inside the &lt;code&gt;result&lt;/code&gt; ref.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;selectResult&lt;/code&gt; function below the &lt;code&gt;searchResults&lt;/code&gt; function is used to call the &lt;a href="https://github.com/yext/answers-core/blob/master/docs/answers-core.answerscore.universalsearch.md?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;&lt;code&gt;universalSearch&lt;/code&gt;&lt;/a&gt; method. This method is used to search across all verticals. Depending on a selected search result, this function is called to get data depending on the query. The &lt;code&gt;universalSearch&lt;/code&gt; method also needs a single necessary parameter, i.e., the query. The selected result from the &lt;code&gt;universalAutocomplete&lt;/code&gt; is passed as the query. The received results are stored in the &lt;code&gt;r&lt;/code&gt; variable. You can see the received result by console logging the variable. The &lt;code&gt;r&lt;/code&gt; variable holds a lot of data. For simplicity in this article, you’ll only use a few values from the result. &lt;/p&gt;

&lt;p&gt;When an autocomplete search result is selected, the description received from the &lt;code&gt;universalSearch&lt;/code&gt; method will be shown to the user. Because the &lt;code&gt;universalSearch&lt;/code&gt; method is used to search across all verticals; results received from all the verticals will be merged into a single array. The aim is to show the description and name of each search result. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyv9sly1ard4vwne7rbb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyv9sly1ard4vwne7rbb.gif" alt="vue autocomplete"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also create separate tabs for search results depending on the verticals. Each vertical holds the results in an array. To merge the results into a single array, an empty array called &lt;code&gt;ansArr&lt;/code&gt; is defined. The &lt;code&gt;verticalResults&lt;/code&gt; object holds all the vertical results. The &lt;code&gt;reduce&lt;/code&gt; method is used in this object. The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce" rel="noopener noreferrer"&gt;&lt;code&gt;reduce method&lt;/code&gt;&lt;/a&gt; is a higher-order JavaScript function that executes a reducer function on each array element and returns a single value. &lt;br&gt;
On each element, another &lt;code&gt;forEach&lt;/code&gt; loop is run because each element holds an array that contains the results. The image below will help you better understand the structure of the data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgur.com%2FmCaV1Rx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgur.com%2FmCaV1Rx.jpg" alt="Yext Answers Universal Search Results"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the &lt;code&gt;forEach&lt;/code&gt; loop, if an object description is not empty, the result is pushed into the &lt;code&gt;ansArr&lt;/code&gt; array.&lt;br&gt;
Once the single array is generated, the &lt;code&gt;selectedResult&lt;/code&gt; is initialized with the array. You can now show the results in the DOM. But before moving to show the data, one last step needs to be taken. Whenever a result is selected and the description is shown, you need to hide the search results. A simple &lt;code&gt;display: none;&lt;/code&gt; property is added to the autocomplete search results using JavaScript.&lt;/p&gt;

&lt;p&gt;To display the autocomplete results, an unordered list is used. The unordered list is only displayed when the &lt;code&gt;result.results&lt;/code&gt; array is not undefined. The condition is tested using &lt;a href="https://vuejs.org/guide/essentials/conditional.html" rel="noopener noreferrer"&gt;&lt;code&gt;v-if&lt;/code&gt;&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;       &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"px-1 pt-1 pb-2 font-bold border-b border-gray-200"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          Showing &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; results
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;
          &lt;span class="na"&gt;v-for&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r in result.results"&lt;/span&gt;
          &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"r.id"&lt;/span&gt;
          &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"selectResult(r.value)"&lt;/span&gt;
          &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cursor-pointer hover:bg-gray-100 p-1"&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first &lt;code&gt;li&lt;/code&gt; item shows the number of search results. The second list item holds the autocomplete results And renders all the results using a &lt;code&gt;v-for&lt;/code&gt; loop. Whenever a search result is clicked, the &lt;code&gt;selectResult&lt;/code&gt; function is called, and the selected value is passed into the function. The explanation of the function is described above.&lt;/p&gt;

&lt;p&gt;Similar to rendering the autocomplete results, the universal search results are also displayed using an unordered list. Only the &lt;code&gt;name&lt;/code&gt; and the &lt;code&gt;description&lt;/code&gt; from the results are shown. Yext Answers also provides the search data in HTML format to make the query bold in the results. To render the raw HTML queries &lt;a href="https://vuejs.org/guide/essentials/template-syntax.html#raw-html" rel="noopener noreferrer"&gt;&lt;code&gt;v-html&lt;/code&gt;&lt;/a&gt; is used.&lt;/p&gt;

&lt;p&gt;If you import the &lt;code&gt;UniversalAutocomplete&lt;/code&gt; component to your &lt;code&gt;App.vue&lt;/code&gt; file and render it, you'll be able to search the available questions. The &lt;code&gt;App.vue&lt;/code&gt; file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
import UniversalAutocomplete from "./components/UniversalAutocomplete.vue";
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UniversalAutocomplete&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can similarly make a vertical autocomplete component using the &lt;a href="https://github.com/yext/answers-core/blob/master/docs/answers-core.answerscore.verticalautocomplete.md?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;vertical autocomplete&lt;/a&gt; method.&lt;/p&gt;

&lt;p&gt;The universal search and the universal autocomplete features are shown in the example code, which has been written using the required parameters only. You can customize your search even more using the parameters. You can visit &lt;a href="https://stackblitz.com/edit/github-rxqfix?file=README.md" rel="noopener noreferrer"&gt;sandbox&lt;/a&gt; or &lt;a href="https://github.com/nemo0/yext-answers-autocomplete" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; to explore how the searches are implemented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This article covered the basics of integrating Yext Answers with a Vue 3 app. It also covered how a Yext Answers Experience can be set up. The article's primary aim was to help you get started with the Yext Answers API. If you want to know more about the API and delve deeper, you can create a &lt;a href="https://hitchhikers.yext.com/?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;Yext Hitchhikers account&lt;/a&gt;, which can help you learn and experiment with an array of Yext products.&lt;/p&gt;

&lt;p&gt;Credits: This article was first published on &lt;a href="https://hitchhikers.yext.com/guides/getting-started-with-answers-in-vue?utm_source=draftdev&amp;amp;utm_campaign=hitchhikers&amp;amp;utm_countent=yext-answers-in-vuejs" rel="noopener noreferrer"&gt;Yext Hitchhikers&lt;/a&gt; by Subha Chanda.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>webdev</category>
      <category>yext</category>
      <category>search</category>
    </item>
  </channel>
</rss>
