Webround Frontend Custom React Code
I componenti custom sono React standard compilati con Vite, montati come Web Components nel runtime di Webround.
Per tutto ciò che non è coperto qui: https://docs.webround.com
Struttura del componente
Ogni componente riceve una prop wr con il contesto completo del sito.
Usa sempre un default export.
const MyComponent = ({ wr }: { wr: Wr }) => {
return <div>Hello</div>;
};
export default MyComponent;
Struttura dei file
- Root:
src/ - Pagine:
src/pages/MyPage.tsx - Componenti:
src/components/Hero.tsx - Stili globali:
src/style.css - Importa tra file con path relativi:
import Hero from "./Hero"
Non è obbligatorio usare questa struttura, ma è consigliato.
Navigazione interna
<a
href={wr.utils.generateHref("/path")}
onClick={(e) => {
e.preventDefault();
wr.utils.navigate(wr.utils.generateHref("/path"));
}}
>
Link
</a>
Anchor links (shadow DOM)
const host = document.querySelector('wr-src-{pagename}-{componentname}') as HTMLElement & { shadowRoot: ShadowRoot };
const target = host?.shadowRoot?.querySelector('#target-id') as HTMLElement | null;
const header = document.querySelector('wr-src-siteheader') as HTMLElement | null;
const headerHeight = header?.getBoundingClientRect().height ?? 0;
if (!target) return;
const top = target.getBoundingClientRect().top + window.scrollY - headerHeight;
window.scrollTo({ top, behavior: 'smooth' });
Nell'esempio, si suppone che i file siano organizzati con la struttura predefinita: src/page/Component.tsx, mentre l'header è posizionato sotto il file src/SiteHeader.tsx.
CSS
- Usa Tailwind v4
- Le CSS variables del sito (
--font-main,--brand-blue, ecc.) sono accessibili dentro il shadow DOM, ma devono essere definite incustomStyle.csstramite la sidebar sinistra, alla voce "custom styles" - Le classi CSS del sito non cascadano nel shadow DOM
- Se hai bisogno di utility class globali, definiscile in
src/style.cssmappandole sulle CSS variables, poi importa il file in ogni componente - Non importare
customStyle.css
Editor safety
Quando il codice viene eseguito nell'editor, il valore booleano wr.inEditor è impostato a true.
Evita side effect nell'editor (fetch, analytics, scroll listener, timer):
if (wr.inEditor) return;
Form con Altcha
const proof = await wr.utils.getAltchaChallenge();
const ok = await wr.utils.submitForm({ name, email, message }, [], proof);
Tipi SDK (prop wr)
Scarica le definizioni complete dei tipi wr: https://docs.webround.com/wr.d.ts
Tips
Dopo aver scritto codice React custom, salva e compila sempre. L'azione di compilazione avvia il processo di build, in modo che il JS bundled possa essere caricato nella pagina web. Attendi sempre il successo della compilazione e specifica il path nell'injection point dove vuoi visualizzare il codice React. Se avviene una nuova build, il ricaricamento della pagina è obbligatorio per visualizzare i Web Components aggiornati e non obsoleti.