Analytics. Search Viewcomponent
component
Publishes a event to the
Analytics.Provider
component.
Anchor to analyticsSearchView-parametersParameters
- Anchor to propspropsSearchViewPropsrequired
SearchViewProps
- customData
OtherData
- data
SearchPayload
{
data?: SearchPayload;
customData?: OtherData;
}
OtherData
OtherData
SearchPayload
- searchResults
The search results
any
- searchTerm
The search term used for the search results page
string
{
/** The search term used for the search results page */
searchTerm: string;
/** The search results */
searchResults?: any;
}
Was this section helpful?
Example
import {Analytics} from '@shopify/hydrogen';
import {useLoaderData} from 'react-router';
export async function loader({request}) {
const url = new URL(request.url);
const searchParams = new URLSearchParams(url.search);
const searchTerm = String(searchParams.get('q') || '');
return {searchTerm};
}
export default function SearchPage() {
const {searchTerm} = useLoaderData();
return (
<div className="search">
<h1>Search</h1>
<Analytics.SearchView data={{searchTerm}} />
</div>
);
}
Examples
example
Description
This is the default example
JavaScript
import {Analytics} from '@shopify/hydrogen'; import {useLoaderData} from 'react-router'; export async function loader({request}) { const url = new URL(request.url); const searchParams = new URLSearchParams(url.search); const searchTerm = String(searchParams.get('q') || ''); return {searchTerm}; } export default function SearchPage() { const {searchTerm} = useLoaderData(); return ( <div className="search"> <h1>Search</h1> <Analytics.SearchView data={{searchTerm}} /> </div> ); }
TypeScript
import {Analytics} from '@shopify/hydrogen'; import {type LoaderFunctionArgs} from '@shopify/remix-oxygen'; import {useLoaderData} from 'react-router'; export async function loader({request}: LoaderFunctionArgs) { const url = new URL(request.url); const searchParams = new URLSearchParams(url.search); const searchTerm = String(searchParams.get('q') || ''); return {searchTerm}; } export default function SearchPage() { const {searchTerm} = useLoaderData<typeof loader>(); return ( <div className="search"> <h1>Search</h1> <Analytics.SearchView data={{searchTerm}} /> </div> ); }