📌  相关文章
📜  如何使用 Algolia 在 Next.js 中添加搜索功能?(1)

📅  最后修改于: 2023-12-03 15:23:49.502000             🧑  作者: Mango

如何使用 Algolia 在 Next.js 中添加搜索功能?

在现代化的前端 Web 开发中,搜索功能是一个必不可少的功能。为了将搜索整合到我们的 Next.js 应用程序中,我们可以使用 Algolia,Algolia 是一个第三方全文搜索服务,可以为我们的应用程序提供全文搜索功能。

在本文中,我们将介绍如何在 Next.js 中使用 Algolia 添加搜索功能。

前置条件

在开始本教程之前,您需要注册一个 Algolia 帐户。并创建一个索引以存储我们搜索的数据。

安装依赖

首先,我们需要安装一些依赖:

npm install algoliasearch react-instantsearch-dom

algoliasearch 库是 Algolia 的 JavaScript 客户端,它会帮助我们从服务器到 Algolia 的 API 进行通信。

react-instantsearch-dom 是基于 React 的 Algolia 客户端库,它为开发人员提供了一个易于使用的组件库,用于快速构建高度定制的搜索应用程序。

配置 Algolia 客户端

在 Next.js 应用程序中,我们可以在 getStaticPropsgetServerSideProps 中初始化 Algolia 客户端。

import algoliasearch from 'algoliasearch';

export async function getStaticProps() {
  // 初始化 Algolia 客户端
  const client = algoliasearch('APP_ID', 'API_KEY');
  
  return {
    props: {
      client,
    },
  };
}

上面的代码中,我们初始化了 Algolia 客户端并将它作为 props 传递给页面组件。

初始化搜索组件

接下来,我们需要在页面组件中初始化搜索组件。

import { InstantSearch, SearchBox, Hits } from 'react-instantsearch-dom';

function Home({ client }) {
  return (
    <InstantSearch indexName="index_name" searchClient={client}>
      <SearchBox />
      <Hits />
    </InstantSearch>
  );
}

在上面的代码中,我们使用 InstantSearch 组件初始化了 Algolia 客户端。InstantSearch 组件需要两个 props:

  • indexName: 字符串类型,设置 Algolia 中用于搜索的索引名称。
  • searchClient: Algolia 客户端对象,作为搜索请求的发送者。

接下来,我们添加了一个 SearchBox 组件和一个 Hits 组件。SearchBox 组件提供了一个搜索输入框和搜索按钮。Hits 组件用于显示搜索结果。

显示搜索结果

要显示搜索结果,我们需要在 Hits 组件中添加一个 render 函数。

function Home({ client }) {
  return (
    <InstantSearch indexName="index_name" searchClient={client}>
      <SearchBox />
      <Hits hitComponent={Hit} />
    </InstantSearch>
  );
}

function Hit({ hit }) {
  return (
    <div>
      <h2>{hit.title}</h2>
      <p>{hit.description}</p>
    </div>
  );
}

在上面的代码中,我们添加了一个 Hit 组件,这个组件在每个 hit 上进行渲染。我们可以在这个组件中访问 hit 对象,hit 对象是从 Algolia API 返回的 JSON 数据。

部署应用

最后,我们需要在服务器上部署应用程序。Next.js 支持多种部署选项。在本教程中,我们将使用 Vercel。

在您的 Vercel 帐户中,将代码存储在 GitHub 存储库中。将应用程序代码推送到存储库后,导航到 Vercel,单击“New Project”并选择存储库以部署应用程序。

总结

在本教程中,我们介绍了如何在 Next.js 中使用 Algolia 添加搜索功能。首先,我们安装了所需的软件包,然后初始化了 Algolia 客户端。接着,我们配置了搜索组件并向页面添加了搜索框和搜索结果。最后,我们部署了应用程序。