在ReactJS中清除来自Algolia和InstantSearch的结果

我(reactjs新手)不能使用其他人对我的代码的回答,所以。

我想做:

  • 不输入任何内容就不会显示结果(命中率)。问题状态:已完成;
  • 我想在清除输入搜索(退格)后清除所有结果(命中):未完成;

我可怜的解决方案是在代码第一次运行时尝试将“ let变量noResultsLoad”更改为true,然后将其更改为false。这样可以避免首次加载结果。

但是,如果我键入一些内容并尝试清除输入搜索,结果仍然存在。

我的search.js(仅供参考:TerminalInput = Search):

import React from "react"
import algoliasearch from 'algoliasearch/lite';
import { InstantSearch,SearchBox,Hits,Stats } from "react-instantsearch-dom"

import Hit from "./Hit"

import * as S from "../../styles/components/terminalinput"

const algolia = {
  appId: process.env.GATSBY_ALGOLIA_APP_ID,searchOnlyApiKey: process.env.GATSBY_ALGOLIA_SEARCH_KEY,indexName: process.env.GATSBY_ALGOLIA_INDEX_NAME
}

let noResultsLoad = true;

const algoliaClient = algoliasearch(algolia.appId,algolia.searchOnlyApiKey);

// my poor solution,please refactor this
const searchClient = {
  search(requests) {
    if (noResultsLoad === true) {
      noResultsLoad = false;
      return;
    }
    return algoliaClient.search(requests);
  },};

const TerminalInput = () => {
  return (
    <S.TerminalInputWrapper>
      <InstantSearch 
        searchClient={searchClient} 
        indexName={algolia.indexName}
      >
        <SearchBox autoFocus translations={{ placeholder: "Pesquisar..." }} />
        <Hits hitComponent={Hit} />
        <Stats
          translations={{
            stats(nbHits,timeSpentMs) {
              return `${nbHits} resultados encontrados em ${timeSpentMs}ms`
            },}}
        />
      </InstantSearch>
    </S.TerminalInputWrapper>
  )
}

export default TerminalInput

我的Hit.js:

import React from "react"
import PostItem from "../PostItem"

const Hit = ({ hit }) => {
  const noResults = hit.noResults

  if(noResults){
    return
  }else
  return (
  <PostItem
    slug={hit.fields.slug}
    title={hit.title}
    date={hit.date}
    description={hit.description}
    category={hit.category}
  />
)}

export default Hit
whui0919 回答:在ReactJS中清除来自Algolia和InstantSearch的结果

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3092419.html

大家都在问