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