|
1 | 1 |
|
2 | 2 | # Wie man die Buttons und RSVP-Formulare mit Astro nutzt |
3 | 3 |
|
4 | | -## Schritt 0: Wähle ein Vorgehen |
| 4 | +## Schritt 0: Wähle das beste Vorgehen |
5 | 5 |
|
6 | | -Für Static Site Generators (SSG) empfehlen wir generell die Nutzung des Add to Calendar Buttons via CDN. |
| 6 | +Du kannst einfach das Add to Calendar Button Skript via CDN laden und so wie in der [allgemeinen HTML-Anleitung](/de/integration/html.html) beschrieben integrieren. |
| 7 | +Hierbei muss du darauf achten, dass das Ganze nur client-seitig geschieht. Zudem ist dieser Weg nicht ganz ideal. |
7 | 8 |
|
8 | | -Alternativ kannst du aber auch das npm Package installieren und das Modul über eine Observer-Funktion implementieren. |
| 9 | +Wir empfehlen die Nutzung des React-Wrapper npm-Packages, die Erstellung einer benutzerdefinierten JSX-Komponente und die Integration dieser Komponente mit dem Attribut `client:only="react"`. |
9 | 10 |
|
10 | | -Wir beschreiben nachfolgend alle Optionen. |
| 11 | +## Schritt 1: Setup |
11 | 12 |
|
12 | | -## Schritt 1: Einrichtung |
| 13 | +### Erstelle eine neue Komponente |
13 | 14 |
|
14 | | -### Option A: Integration via CDN |
| 15 | +Erstelle eine neue Komponente im components-Verzeichnis deines Astro-Projekts. |
| 16 | +Nenne diese "AddtoCalendarButton.tsx". |
| 17 | +Falls du mehrere Buttons nutzen möchtest, kannst du entweder mehrere Komponenten erstellen oder das Ganze über entsprechende Props dynamisch gestalten. |
15 | 18 |
|
16 | | -Lade das Skript, indem du den nachfolgenden "Script Tag" im head-Bereich deiner Webseite einfügst. |
| 19 | +### Installiere das React-Wrapper npm-Package |
17 | 20 |
|
18 | | -Das Skript lädt automatisch auf nicht-blockierende Art und Weise. Daher ist es im Zweifel nicht entscheidend, wo genau es platziert wird. |
| 21 | +Installiere das Package über die npm Registry. |
19 | 22 |
|
20 | | -```html |
21 | | -<script src="https://cdn.jsdelivr.net/npm/add-to-calendar-button@2" async defer></script> |
| 23 | +```bash |
| 24 | +npm install add-to-calendar-button-react |
22 | 25 | ``` |
23 | 26 |
|
24 | | -### Option B: npm Installation |
25 | | - |
26 | | -Alternativ kannst du das Package auch aus der npm Registry installieren. |
| 27 | +...und importiere es in deine Komponente. |
27 | 28 |
|
28 | | -```bash |
29 | | -npm install add-to-calendar-button |
| 29 | +```tsx |
| 30 | +import { AddToCalendarButton } from 'add-to-calendar-button-react'; |
30 | 31 | ``` |
31 | 32 |
|
32 | | -...und einen Observer aufsetzen, der das Skript entsprechend lädt: |
33 | | - |
34 | | -```html |
35 | | -<script type="module" hoist> |
36 | | - const observer = new IntersectionObserver((entries) => { |
37 | | - for (const entry of entries) { |
38 | | - if (!entry.isIntersecting) continue; |
39 | | - observer.disconnect(); |
40 | | - import('../../node_modules/add-to-calendar-button/dist/module/index.js'); |
41 | | - } |
42 | | - }); |
43 | | - const instances = document.querySelectorAll('add-to-calendar-button'); |
44 | | - for (const instance of instances) observer.observe(instance); |
45 | | -</script> |
| 33 | +## Schritt 2: Definiere den Button |
| 34 | + |
| 35 | +Definiere den Button in deiner Komponente. |
| 36 | +In unserem Beispiel haben wir den ProKey als Prop definiert, um ihn dynamisch zu halten. |
| 37 | + |
| 38 | +```tsx |
| 39 | +import { AddToCalendarButton } from 'add-to-calendar-button-react'; |
| 40 | +import type { AddToCalendarButtonType } from 'add-to-calendar-button-react'; |
| 41 | + |
| 42 | +export default function atcb(props: AddToCalendarButtonType) { |
| 43 | + return ( |
| 44 | + <AddToCalendarButton proKey={props.prokey} ></AddToCalendarButton> |
| 45 | + ); |
| 46 | +} |
46 | 47 | ``` |
47 | 48 |
|
48 | | -## Schritt 2: Loslegen |
| 49 | +## Schritt 3: Loslegen |
| 50 | + |
| 51 | +Du kannst die Komponente nun überall importieren, wo sie benötigt wird und sie wie jede andere benutzten. |
49 | 52 |
|
50 | | -Beginne mit der Nutzung, indem du einen `<add-to-calendar-button proKey="prokey-deines-events" />` Tag in deinen Quellcode einfügst. |
| 53 | +Dein Code kann hierbei bspw. wie folgt aussehen. |
| 54 | + |
| 55 | +```astro |
| 56 | +--- |
| 57 | +import AddToCalendarButton from '../components/AddToCalendarButton.tsx'; |
| 58 | +import Layout from '../layouts/Layout.astro'; |
| 59 | +--- |
| 60 | +<Layout> |
| 61 | +<AddToCalendarButton client:only="react" prokey="prokey-deines-events" /> |
| 62 | +</Layout> |
| 63 | +``` |
0 commit comments