<QueryRuleCustomData children={function} // Optional parameters transformItems={function} />
About this widget #
The QueryRuleCustomData widget displays custom data from Query Rules.
You may want to use this widget to display banners or recommendations returned by Query Rules, and that match search parameters.
Examples #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { QueryRuleCustomData } from 'react-instantsearch-dom';
<QueryRuleCustomData>
{({ items }) =>
items.map(({ banner, title, link }) => {
if (!banner) {
return null;
}
return (
<section key={title}>
<h2>{title}</h2>
<a href={link}>
<img src={banner} alt={title} />
</a>
</section>
);
})
}
</QueryRuleCustomData>
Props #
children
# |
type: function
Required
Renders each item from the Query Rule custom data. This function is called with the |
||
|
Copy |
|||
transformItems
# |
type: function
Optional
Transforms the items to display. |
||
|
Copy |
|||
Customize the UI - connectQueryRules#
If you want to create your own UI of the QueryRuleCustomData widget or use another UI library, you can use connectors.
Connectors are higher-order components. They encapsulate the logic for a specific kind of widget and they provide a way to interact with the InstantSearch context.
They have an outer component API that we call exposed props, and they provide some other props to the wrapped components which are called the provided props.
This connector is also used to build other widgets: QueryRuleContext
It’s a 3-step process:
// 1. Create a React component
const QueryRuleCustomData = () => {
// return the DOM output
};
// 2. Connect the component using the connector
const CustomQueryRuleCustomData = connectQueryRules(QueryRuleCustomData);
// 3. Use your connected widget
<CustomQueryRuleCustomData />
Create a React component#
const QueryRuleCustomData = ({
object[] items,
}) => {
// return the DOM output
};
Provided Props#
items
# |
type: object[]
The items that matched the query rule. |
||
|
Copy |
|||
Create and instantiate your connected widget#
const CustomQueryRuleCustomData = connectQueryRules(QueryRuleCustomData);
<CustomQueryRuleCustomData
// Optional parameters
transformItems={function}
/>
Exposed Props#
Full example#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { connectQueryRules } from 'react-instantsearch-dom';
const QueryRuleCustomData = ({ items }) =>
items.map(({ banner, title, link }) => {
if (!banner) {
return null;
}
return (
<section key={title}>
<h2>{title}</h2>
<a href={link}>
<img src={banner} alt={title} />
</a>
</section>
);
});
const CustomQueryRuleCustomData = connectQueryRules(QueryRuleCustomData);
HTML output#
1
<div class="ais-QueryRuleCustomData"></div>