Skip to content

Commit

Permalink
Expose useLoadScript (#1080)
Browse files Browse the repository at this point in the history
  • Loading branch information
wizardlyhel committed Jul 21, 2023
1 parent 6db2617 commit c39411e
Show file tree
Hide file tree
Showing 9 changed files with 159 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .changeset/bright-donuts-flow.md
@@ -0,0 +1,6 @@
---
'@shopify/hydrogen-react': patch
'@shopify/hydrogen': patch
---

Export useLoadScript
42 changes: 42 additions & 0 deletions packages/hydrogen-react/docs/generated/generated_docs_data.json
Expand Up @@ -6470,6 +6470,48 @@
}
]
},
{
"name": "useLoadScript",
"category": "hooks",
"isVisualComponent": false,
"related": [],
"description": "The `useLoadScript` hook loads an external script tag in the browser. It allows React components to lazy-load third-party dependencies.",
"type": "hook",
"defaultExample": {
"description": "I am the default example",
"codeblock": {
"tabs": [
{
"title": "JavaScript",
"code": "import React, {useEffect} from 'react';\nimport {useLoadScript} from '@shopify/hydrogen-react';\n\nexport default function Homepage() {\n const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');\n\n useEffect(() => {\n if (scriptStatus === 'done') {\n // do something\n }\n }, [scriptStatus]);\n\n return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;\n}\n",
"language": "jsx"
},
{
"title": "TypeScript",
"code": "import React, {useEffect} from 'react';\nimport {useLoadScript} from '@shopify/hydrogen-react';\n\nexport default function Homepage() {\n const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');\n\n useEffect(() => {\n if (scriptStatus === 'done') {\n // do something\n }\n }, [scriptStatus]);\n\n return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;\n}\n",
"language": "tsx"
}
],
"title": "Example code"
}
},
"definitions": [
{
"title": "Props",
"description": "",
"type": "LoadScriptParams",
"typeDefinitions": {
"LoadScriptParams": {
"filePath": "/load-script.tsx",
"syntaxKind": "TypeAliasDeclaration",
"name": "LoadScriptParams",
"value": "Parameters<typeof loadScript>",
"description": ""
}
}
}
]
},
{
"name": "parseGid",
"category": "utilities",
Expand Down
1 change: 1 addition & 0 deletions packages/hydrogen-react/src/index.ts
Expand Up @@ -43,6 +43,7 @@ export {getShopifyCookies} from './cookies-utils.js';
export {ExternalVideo} from './ExternalVideo.js';
export {flattenConnection} from './flatten-connection.js';
export {Image, IMAGE_FRAGMENT} from './Image.js';
export {useLoadScript} from './load-script.js';
export {MediaFile} from './MediaFile.js';
export {ModelViewer} from './ModelViewer.js';
export {Money} from './Money.js';
Expand Down
38 changes: 38 additions & 0 deletions packages/hydrogen-react/src/load-script.doc.ts
@@ -0,0 +1,38 @@
import {ReferenceEntityTemplateSchema} from '@shopify/generate-docs';

const data: ReferenceEntityTemplateSchema = {
name: 'useLoadScript',
category: 'hooks',
isVisualComponent: false,
related: [],
description:
'The `useLoadScript` hook loads an external script tag in the browser. It allows React components to lazy-load third-party dependencies.',
type: 'hook',
defaultExample: {
description: 'I am the default example',
codeblock: {
tabs: [
{
title: 'JavaScript',
code: './load-script.example.jsx',
language: 'jsx',
},
{
title: 'TypeScript',
code: './load-script.example.tsx',
language: 'tsx',
},
],
title: 'Example code',
},
},
definitions: [
{
title: 'Props',
type: 'LoadScriptParams',
description: '',
},
],
};

export default data;
14 changes: 14 additions & 0 deletions packages/hydrogen-react/src/load-script.example.jsx
@@ -0,0 +1,14 @@
import React, {useEffect} from 'react';
import {useLoadScript} from '@shopify/hydrogen-react';

export default function Homepage() {
const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');

useEffect(() => {
if (scriptStatus === 'done') {
// do something
}
}, [scriptStatus]);

return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;
}
14 changes: 14 additions & 0 deletions packages/hydrogen-react/src/load-script.example.tsx
@@ -0,0 +1,14 @@
import React, {useEffect} from 'react';
import {useLoadScript} from '@shopify/hydrogen-react';

export default function Homepage() {
const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');

useEffect(() => {
if (scriptStatus === 'done') {
// do something
}
}, [scriptStatus]);

return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;
}
1 change: 1 addition & 0 deletions packages/hydrogen/docs/copy-hydrogen-react-docs.cjs
Expand Up @@ -10,6 +10,7 @@ const docsToCopy = [
'ShopPayButton',
'Video',
'useMoney',
'useLoadScript',
'useShopifyCookies',
'flattenConnection',
'getClientBrowserParameters',
Expand Down
42 changes: 42 additions & 0 deletions packages/hydrogen/docs/generated/generated_docs_data.json
Expand Up @@ -13613,6 +13613,48 @@
}
]
},
{
"name": "useLoadScript",
"category": "hooks",
"isVisualComponent": false,
"related": [],
"description": "The `useLoadScript` hook loads an external script tag in the browser. It allows React components to lazy-load third-party dependencies.",
"type": "hook",
"defaultExample": {
"description": "I am the default example",
"codeblock": {
"tabs": [
{
"title": "JavaScript",
"code": "import React, {useEffect} from 'react';\nimport {useLoadScript} from '@shopify/hydrogen';\n\nexport default function Homepage() {\n const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');\n\n useEffect(() => {\n if (scriptStatus === 'done') {\n // do something\n }\n }, [scriptStatus]);\n\n return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;\n}\n",
"language": "jsx"
},
{
"title": "TypeScript",
"code": "import React, {useEffect} from 'react';\nimport {useLoadScript} from '@shopify/hydrogen';\n\nexport default function Homepage() {\n const scriptStatus = useLoadScript('https://some-cdn.com/some-script.js');\n\n useEffect(() => {\n if (scriptStatus === 'done') {\n // do something\n }\n }, [scriptStatus]);\n\n return <div>{scriptStatus === 'done' && <p>Script loaded!</p>}</div>;\n}\n",
"language": "tsx"
}
],
"title": "Example code"
}
},
"definitions": [
{
"title": "Props",
"description": "",
"type": "LoadScriptParams",
"typeDefinitions": {
"LoadScriptParams": {
"filePath": "/load-script.tsx",
"syntaxKind": "TypeAliasDeclaration",
"name": "LoadScriptParams",
"value": "Parameters<typeof loadScript>",
"description": ""
}
}
}
]
},
{
"name": "useShopifyCookies",
"category": "hooks",
Expand Down
1 change: 1 addition & 0 deletions packages/hydrogen/src/index.ts
Expand Up @@ -71,6 +71,7 @@ export {
ShopifySalesChannel,
ShopPayButton,
storefrontApiCustomScalars,
useLoadScript,
useMoney,
useShopifyCookies,
Video,
Expand Down

0 comments on commit c39411e

Please sign in to comment.