1

我正在使用 algolia 的反应即时搜索,并且每次有结果时我都需要显示叠加层。

所以我想通过 algolia 提供的 onSearchStateChange 函数来处理它。但我仍然不知道从哪里获得总点击量。我已经有了一个非常快的想法,就像通过 jquery 提取数字来使用中显示的结果一样。但我不想这样做。您还有其他方法可以建议吗?

   onSearchStateChange(nextState) {

     //must get the number of total hits.

    nextState = cleanDeep(nextState);
    let filters = transformer(nextState);
    this.setState({
        searchState: nextState,
        filters: filters,
        searchChanged: true
    })
    this.sendToAti(filters);

    this.addOverlay(); // <--- function that will show the overlay.

    location.hash = qs.stringify(nextState);
}
4

2 回答 2

3

onSearchStateChange函数不包含searchResults可以找到命中数的对象。

但是,我们提供了包含此信息的<Stats>小部件和连接器。connectStats也许你可以用那个?

于 2017-04-21T15:43:00.067 回答
0

基本上,正如@Marie 指出的并在她指出的链接中记录的那样,您需要遵循 3 个步骤:

1.- 创建自定义组件:

     export default function MyStatefullComponent({ searchResults  }){
            const hasResults = searchResults && searchResults.nbHits !== 0;
            const nbHits = searchResults && searchResults.nbHits;
            //Handle State Mutations Here
           
            return return (hasResults) ? <div className="shadow-xl mb-4 ml-4 p-8 ">
                                             Has Results
                                         </div>
                                         :
                                         <div>Has No Results</div>
            }

2.- 使用连接器连接到组件

拥有自定义组件后,请使用 connectStateResults

import { connectStateResults  } from 'react-instantsearch-dom';

export default function OtherComponent(){  
    const StatefullComponent = connectStateComponent(MyStatefullComponent);

    return <StatefullComponent />
}

3.- 将组件导入/添加到您的其他组件。

于 2021-09-13T17:46:45.447 回答