This is the React InstantSearch v7 documentation.
If you’re upgrading from v6, see the upgrade guide.
If you were using React InstantSearch Hooks,
this v7 documentation applies—just check for necessary changes.
To continue using v6, you can find the archived documentation.
Signature
Import
JavaScript
About this widget
<DynamicWidgets>
is a widget that displays matching widgets,
based on the corresponding index settings and applied index rules.
You can configure the facet merchandising through the corresponding index setting.
To learn more, see Facet display.
All matching widgets mount after the first network request completes.
To avoid a second network request, facets are set to ['*']
and maxValuesPerFacet
is set to 20 by default.
You can override these settings with the facets
and maxValuesPerFacet
parameters.
When server-rendering, InstantSearch will render in two passes,
ensuring that the refinements seen in your UI are correct.
You can also create your own UI with
useDynamicWidgets
.Requirements
You must set the attributes for faceting and configure the facet order, either using the dashboard or with the API parametersattributesForFaceting
and renderingContent
.
Examples
JavaScript
Props
The children of this component are displayed dynamically based on the result of
facetOrdering
.Any child needs to have either an attribute
or attributes
prop.Component used if none of the children matches the
attribute
or attributes[0]
prop.A function to transform the attributes to render, or using a different source to determine the attributes to render.
The facets to apply before dynamic widgets get mounted.Setting the value to
['*']
will request all facets and avoid an additional network request once the widgets are rendered.The default number of facet values to request.To prevent an additional network request when a widget mounts,
it’s recommended to set this value as high as the highest
limit
and showMoreLimit
of the dynamic widgets.
To avoid pinned items not showing in the result,
make sure you choose a maxValuesPerFacet
as high as all the most pinned items you have.JavaScript
Hook
React InstantSearch let you create your own UI for the<DynamicWidgets>
widget with useDynamicWidgets
.
Hooks provide APIs to access the widget state and interact with InstantSearch.
The useDynamicWidgets
Hook accepts parameters and returns APIs.
It must be used inside the <InstantSearch>
component.
Usage
First, create your React component:JavaScript
JavaScript
Parameters
Hooks accept parameters. You can either pass them manually or forward props from a custom component.When passing functions to Hooks, ensure stable references to prevent unnecessary re-renders.
Use
useCallback()
for memoization.
Arrays and objects are automatically memoized.A function to transform the attributes to render,
or using a different source to determine the attributes to render.
The facets to apply before dynamic widgets get mounted.
Setting the value to
['*']
will request all facets and avoid an additional network request once the widgets are added.The default number of facet values to request.
It’s recommended to have this value at least as high as the highest
limit
and showMoreLimit
of dynamic widgets,
as this prevents a second network request once that widget mounts.To avoid pinned items not showing in the result,
make sure you choose a maxValuesPerFacet
at least as high as all the most pinned items you have.JavaScript
APIs
Hooks return APIs, such as state and functions. You can use them to build your UI and interact with React InstantSearch.The list of refinement values to display returned from the Algolia API.
JavaScript