AlgoliaJavaScriptReactSaaS / FaaS

Algolia Instantsearchで、検索結果クリック時にキーワードをリセットする

Algolia Instantsearchをヘッダーなどレイアウト部分に配置している場合、「リンクをクリックしてページ遷移した後は、検索結果を表示しない」動作を実装したくなります。 connectSearchBoxとHi […]

広告ここから
広告ここまで

Algolia Instantsearchをヘッダーなどレイアウト部分に配置している場合、「リンクをクリックしてページ遷移した後は、検索結果を表示しない」動作を実装したくなります。

connectSearchBoxとHitsを組み合わせる

検索フォームのキーワードをリセットするには、connectSearchBoxHitsまたはconnectHitsと組み合わせて使用します。

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

export const AlgoliaSearchResult = connectSearchBox(({refine, currentRefinement}) => {
  const [isShow, shouldShow] = useState(false)

  useEffect(() => {
    shouldShow(!!currentRefinement)
  }, [currentRefinement, shouldShow])

  const handleResetSearchWords = useCallback(() => {
    refine('')
  }, [refine])
  if (!isShow) return null;

  return (
      <Hits hitComponent={({hit}) => (
        <Link href={slug}>
           <span onClick={() => handleResetSearchWords()}>{hit.title}</span>
        </Link>
     )) />
 )
}

currentRefinementの値をuseEffectで監視し、キーワードが入力されていない場合は結果を表示させません。

また、Linkをクリックした場合のクリックイベントを使い、refine('')でキーワードをリセットしています。これはReact RouterやNextあたりのRouterイベントを使ってもよいかもしれません。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts