Algolia:打开抽屉时重置细化

Algolia: Reset of refinement when opening a drawer

我正在使用 Algolia 开发我的市场,我正在使用此示例作为支持。 https://react-instantsearch.netlify.app/examples/e-commerce/

在移动模式下,由于抽屉,过滤器可见。

在我的应用程序中,我为每个小部件定制了 UI。例如,当我使用 SearchBox 进行研究并打开我的过滤器抽屉时,搜索将被重置。

但是当我使用小部件(不是海关)执行此操作时,搜索不会重置。 它认为这是我在自定义组件中的一个错误,所以我尝试使用 Algolia 的文档示例。 我得到了相同的结果

const SearchBox = ({ currentRefinement, refine }) => (
  <input
    type="search"
    value={currentRefinement}
    onChange={event => refine(event.currentTarget.value)}
  />
);

为了遵循我的设计,我真的需要做一个自定义小部件。

有谁知道为什么优化会用自定义小部件重置自身?

我也试过路由 URL,但我有一个带有自定义小部件的无限循环 ^^""

示例:> https://stackblitz.com/edit/react-8dpccc

Algolia's example mobile first page

对于即时搜索自定义小部件,它们需要在反应组件之外定义,以确保重新呈现不会重置搜索状态。

在上面的示例中 -> https://stackblitz.com/edit/react-8dpccc 由 @Newtchuck 提供,从 App 的范围中删除 SearchBox 自定义小部件并将其添加到顶部应该可以解决问题

const SearchBox = ({ currentRefinement, refine }) => (
  <input
    type="search"
    value={currentRefinement}
    onChange={event => refine(event.currentTarget.value)}
  />
);

const CustomSearchBox = connectSearchBox(SearchBox)


const App = () => {.... // rest of the code same as the example