rsnext/examples/script-component/pages/onload.tsx
Steven 4466ba436b
chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

48 lines
1,017 B
TypeScript

import { useMemo, useState } from "react";
import Script from "next/script";
export default function Onload() {
const [stripe, setStripe] = useState<{ stripe: typeof window.Stripe } | null>(
null,
);
const methods = useMemo(
() =>
stripe
? Object.entries(stripe.stripe).filter(
([_key, value]) => typeof value === "function",
)
: [],
[stripe],
);
function handleLoad() {
const stripe = window.Stripe("pk_test_1234");
console.log("Stripe loaded: ", stripe);
setStripe({ stripe });
}
return (
<>
{/* We load Stripe sdk */}
<Script
id="stripe-js"
src="https://js.stripe.com/v3/"
onLoad={handleLoad}
/>
<main>
<h1>Executing code after loading</h1>
<div>
<p>Stripe methods: </p>
<ul>
{methods.map(([method]) => (
<li key={method}>{method}</li>
))}
</ul>
</div>
</main>
</>
);
}