@intlayer/docs 8.10.0 → 8.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/dictionary/markdown.md +336 -7
- package/docs/ar/interest_of_intlayer.md +1 -1
- package/docs/bn/interest_of_intlayer.md +1 -1
- package/docs/cs/interest_of_intlayer.md +1 -1
- package/docs/de/dictionary/markdown.md +336 -7
- package/docs/de/interest_of_intlayer.md +1 -1
- package/docs/en/dictionary/markdown.md +322 -8
- package/docs/en/interest_of_intlayer.md +1 -1
- package/docs/en-GB/dictionary/markdown.md +336 -7
- package/docs/en-GB/interest_of_intlayer.md +1 -1
- package/docs/es/dictionary/markdown.md +336 -7
- package/docs/es/interest_of_intlayer.md +1 -1
- package/docs/fr/dictionary/markdown.md +336 -7
- package/docs/fr/interest_of_intlayer.md +1 -1
- package/docs/hi/dictionary/markdown.md +336 -7
- package/docs/hi/interest_of_intlayer.md +1 -1
- package/docs/id/dictionary/markdown.md +336 -7
- package/docs/id/interest_of_intlayer.md +1 -1
- package/docs/it/dictionary/markdown.md +336 -7
- package/docs/it/interest_of_intlayer.md +1 -1
- package/docs/ja/interest_of_intlayer.md +1 -1
- package/docs/ko/dictionary/markdown.md +336 -7
- package/docs/ko/interest_of_intlayer.md +1 -1
- package/docs/nl/interest_of_intlayer.md +1 -1
- package/docs/pl/dictionary/markdown.md +336 -7
- package/docs/pl/interest_of_intlayer.md +1 -1
- package/docs/pt/benchmark/solid.md +1 -1
- package/docs/pt/benchmark/svelte.md +1 -1
- package/docs/pt/dictionary/markdown.md +336 -7
- package/docs/pt/interest_of_intlayer.md +1 -1
- package/docs/ru/dictionary/markdown.md +445 -3
- package/docs/ru/interest_of_intlayer.md +1 -1
- package/docs/tr/dictionary/markdown.md +336 -7
- package/docs/tr/interest_of_intlayer.md +1 -1
- package/docs/uk/dictionary/markdown.md +336 -7
- package/docs/uk/interest_of_intlayer.md +1 -1
- package/docs/ur/interest_of_intlayer.md +1 -1
- package/docs/vi/dictionary/markdown.md +336 -7
- package/docs/vi/interest_of_intlayer.md +1 -1
- package/docs/zh/dictionary/markdown.md +336 -7
- package/docs/zh/interest_of_intlayer.md +1 -1
- package/docs/zh-TW/interest_of_intlayer.md +1 -1
- package/package.json +7 -7
|
@@ -130,8 +130,6 @@ Anda dapat mendeklarasikan konten Markdown menggunakan fungsi `md` atau cukup se
|
|
|
130
130
|
</Tab>
|
|
131
131
|
</Tabs>
|
|
132
132
|
|
|
133
|
-
---
|
|
134
|
-
|
|
135
133
|
## Merender Markdown
|
|
136
134
|
|
|
137
135
|
Intlayer menyediakan dua cara independen untuk merender Markdown:
|
|
@@ -147,7 +145,7 @@ Rendering Markdown mendukung **MDX** — gunakan komponen JSX/kerangka kerja apa
|
|
|
147
145
|
### 1. Rendering Otomatis (melalui `useIntlayer`)
|
|
148
146
|
|
|
149
147
|
<Tabs group="framework">
|
|
150
|
-
<Tab label="React
|
|
148
|
+
<Tab label="React" value="react">
|
|
151
149
|
Simpul Markdown dapat dirender langsung sebagai JSX.
|
|
152
150
|
|
|
153
151
|
```tsx fileName="App.tsx"
|
|
@@ -197,6 +195,57 @@ Rendering Markdown mendukung **MDX** — gunakan komponen JSX/kerangka kerja apa
|
|
|
197
195
|
{myMarkdownContent.metadata.title}
|
|
198
196
|
```
|
|
199
197
|
|
|
198
|
+
</Tab>
|
|
199
|
+
<Tab label="Next.js" value="nextjs">
|
|
200
|
+
Simpul Markdown dapat dirender langsung sebagai JSX.
|
|
201
|
+
|
|
202
|
+
```tsx fileName="App.tsx"
|
|
203
|
+
import { useIntlayer } from "next-intlayer";
|
|
204
|
+
import { MarkdownProvider } from "next-intlayer/markdown";
|
|
205
|
+
|
|
206
|
+
const AppContent = () => {
|
|
207
|
+
const { myMarkdownContent } = useIntlayer("app");
|
|
208
|
+
|
|
209
|
+
return <div>{myMarkdownContent}</div>;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
const App = () => (
|
|
213
|
+
<MarkdownProvider
|
|
214
|
+
components={{
|
|
215
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
216
|
+
MyButton: (props) => <button {...props} />, // Komponen MDX
|
|
217
|
+
}}
|
|
218
|
+
>
|
|
219
|
+
<AppContent />
|
|
220
|
+
</MarkdownProvider>
|
|
221
|
+
);
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
> Jika `MarkdownProvider` tidak ada, Intlayer akan merender markdown menggunakan parser default Markdown ke JSX.
|
|
225
|
+
|
|
226
|
+
Anda juga dapat memberikan pengesampingan lokal untuk simpul tertentu menggunakan metode `.use()`:
|
|
227
|
+
|
|
228
|
+
```tsx
|
|
229
|
+
{myMarkdownContent.use({
|
|
230
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
231
|
+
})}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Anda dapat mengambil Markdown sebagai sebuah string:
|
|
235
|
+
|
|
236
|
+
```tsx
|
|
237
|
+
{myMarkdownContent.value}
|
|
238
|
+
{String(myMarkdownContent)}
|
|
239
|
+
{myMarkdownContent.toString()}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Dan Anda dapat mengakses metadata markdown Anda seperti ini:
|
|
243
|
+
|
|
244
|
+
```tsx
|
|
245
|
+
{myMarkdownContent.metadata}
|
|
246
|
+
{myMarkdownContent.metadata.title}
|
|
247
|
+
```
|
|
248
|
+
|
|
200
249
|
</Tab>
|
|
201
250
|
<Tab label="Vue" value="vue">
|
|
202
251
|
Di Vue, konten Markdown dapat dirender menggunakan tag `component` bawaan atau langsung sebagai sebuah simpul.
|
|
@@ -441,7 +490,7 @@ Rendering Markdown mendukung **MDX** — gunakan komponen JSX/kerangka kerja apa
|
|
|
441
490
|
Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useIntlayer`. Gunakan utilitas ini saat Anda perlu merender Markdown dari sumber selain dari kamus Anda.
|
|
442
491
|
|
|
443
492
|
<Tabs group="framework">
|
|
444
|
-
<Tab label="React
|
|
493
|
+
<Tab label="React" value="react">
|
|
445
494
|
|
|
446
495
|
#### Komponen `<MarkdownRenderer />`
|
|
447
496
|
|
|
@@ -479,6 +528,45 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
479
528
|
const jsx = renderMarkdown("# Judul Saya", { forceBlock: true });
|
|
480
529
|
```
|
|
481
530
|
|
|
531
|
+
</Tab>
|
|
532
|
+
<Tab label="Next.js" value="nextjs">
|
|
533
|
+
|
|
534
|
+
#### Komponen `<MarkdownRenderer />`
|
|
535
|
+
|
|
536
|
+
Merender string Markdown dengan opsi tertentu.
|
|
537
|
+
|
|
538
|
+
```tsx
|
|
539
|
+
import { MarkdownRenderer } from "next-intlayer/markdown";
|
|
540
|
+
|
|
541
|
+
<MarkdownRenderer forceBlock={true} tagfilter={true}>
|
|
542
|
+
{"# Judul Saya"}
|
|
543
|
+
</MarkdownRenderer>
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
#### Hook `useMarkdownRenderer()`
|
|
547
|
+
|
|
548
|
+
Mendapatkan fungsi perender yang sudah dikonfigurasi sebelumnya.
|
|
549
|
+
|
|
550
|
+
```tsx
|
|
551
|
+
import { useMarkdownRenderer } from "next-intlayer/markdown";
|
|
552
|
+
|
|
553
|
+
const renderMarkdown = useMarkdownRenderer({
|
|
554
|
+
forceBlock: true,
|
|
555
|
+
components: { h1: (props) => <h1 {...props} className="custom" /> }
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
return renderMarkdown("# Judul Saya");
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
#### Utilitas `renderMarkdown()`
|
|
562
|
+
Utilitas mandiri untuk rendering di luar komponen.
|
|
563
|
+
|
|
564
|
+
```tsx
|
|
565
|
+
import { renderMarkdown } from "next-intlayer/markdown";
|
|
566
|
+
|
|
567
|
+
const jsx = renderMarkdown("# Judul Saya", { forceBlock: true });
|
|
568
|
+
```
|
|
569
|
+
|
|
482
570
|
</Tab>
|
|
483
571
|
<Tab label="Vue" value="vue">
|
|
484
572
|
|
|
@@ -608,14 +696,12 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
608
696
|
</Tab>
|
|
609
697
|
</Tabs>
|
|
610
698
|
|
|
611
|
-
---
|
|
612
|
-
|
|
613
699
|
## Konfigurasi Global dengan `MarkdownProvider`
|
|
614
700
|
|
|
615
701
|
`MarkdownProvider` (atau padanan kerangka kerjanya) mengonfigurasi jalur rendering Markdown untuk seluruh aplikasi Anda. Ini berlaku baik untuk rendering `useIntlayer` otomatis maupun utilitas pembantu. Opsi yang ditetapkan di sini adalah default — `.use()` mengesampingkannya di tingkat simpul.
|
|
616
702
|
|
|
617
703
|
<Tabs group="framework">
|
|
618
|
-
<Tab label="React
|
|
704
|
+
<Tab label="React" value="react">
|
|
619
705
|
|
|
620
706
|
```tsx fileName="AppProvider.tsx"
|
|
621
707
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -633,6 +719,7 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
633
719
|
);
|
|
634
720
|
```
|
|
635
721
|
|
|
722
|
+
|
|
636
723
|
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
637
724
|
|
|
638
725
|
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
@@ -655,6 +742,48 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
655
742
|
|
|
656
743
|
> Mengimpor perender Markdown Anda secara dinamis adalah cara yang bagus untuk mengurangi ukuran bundel aplikasi Anda.
|
|
657
744
|
|
|
745
|
+
</Tab>
|
|
746
|
+
<Tab label="Next.js" value="nextjs">
|
|
747
|
+
|
|
748
|
+
```tsx fileName="AppProvider.tsx"
|
|
749
|
+
import { MarkdownProvider } from "next-intlayer/markdown";
|
|
750
|
+
|
|
751
|
+
export const AppProvider = ({ children }) => (
|
|
752
|
+
<MarkdownProvider
|
|
753
|
+
components={{
|
|
754
|
+
h1: (props) => <h1 style={{color: 'green'}} {...props} />,
|
|
755
|
+
a: ({ href, ...props }) => <a style={{color: 'red'}} {...props} />,
|
|
756
|
+
MyCustomJSXComponent: (props) => <span style={{color: 'red'}} {...props} />,
|
|
757
|
+
}}
|
|
758
|
+
>
|
|
759
|
+
{children}
|
|
760
|
+
</MarkdownProvider>
|
|
761
|
+
);
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
766
|
+
|
|
767
|
+
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
768
|
+
|
|
769
|
+
```tsx fileName="AppProvider.tsx"
|
|
770
|
+
import { MarkdownProvider } from "next-intlayer/markdown";
|
|
771
|
+
|
|
772
|
+
export const AppProvider = ({ children }) => (
|
|
773
|
+
<MarkdownProvider
|
|
774
|
+
renderMarkdown={async (md) => {
|
|
775
|
+
// Use dynamic import to reduce the bundle size of your application
|
|
776
|
+
const { renderMarkdown } = await import('next-intlayer/markdown');
|
|
777
|
+
return renderMarkdown(md);
|
|
778
|
+
}}
|
|
779
|
+
>
|
|
780
|
+
{children}
|
|
781
|
+
</MarkdownProvider>
|
|
782
|
+
);
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
> Mengimpor perender Markdown Anda secara dinamis adalah cara yang bagus untuk mengurangi ukuran bundel aplikasi Anda.
|
|
786
|
+
|
|
658
787
|
</Tab>
|
|
659
788
|
<Tab label="Vue" value="vue">
|
|
660
789
|
|
|
@@ -680,6 +809,9 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
680
809
|
app.mount("#app");
|
|
681
810
|
```
|
|
682
811
|
|
|
812
|
+
|
|
813
|
+
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
814
|
+
|
|
683
815
|
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
684
816
|
|
|
685
817
|
```typescript fileName="main.ts"
|
|
@@ -721,6 +853,9 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
721
853
|
</MarkdownProvider>
|
|
722
854
|
```
|
|
723
855
|
|
|
856
|
+
|
|
857
|
+
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
858
|
+
|
|
724
859
|
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
725
860
|
|
|
726
861
|
```svelte fileName="App.svelte"
|
|
@@ -757,6 +892,9 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
757
892
|
);
|
|
758
893
|
```
|
|
759
894
|
|
|
895
|
+
|
|
896
|
+
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
897
|
+
|
|
760
898
|
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
761
899
|
|
|
762
900
|
```tsx fileName="AppProvider.tsx"
|
|
@@ -793,6 +931,9 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
793
931
|
);
|
|
794
932
|
```
|
|
795
933
|
|
|
934
|
+
|
|
935
|
+
> MDX didukung — nama komponen apa pun yang digunakan di dalam Markdown Anda (misalnya `<MyCustomJSXComponent />`) diselesaikan terhadap peta `components`.
|
|
936
|
+
|
|
796
937
|
Anda juga dapat menggunakan perender markdown Anda sendiri:
|
|
797
938
|
|
|
798
939
|
```tsx fileName="AppProvider.tsx"
|
|
@@ -836,3 +977,191 @@ Utilitas ini merender **hanya string Markdown mentah** dan independen dari `useI
|
|
|
836
977
|
|
|
837
978
|
</Tab>
|
|
838
979
|
</Tabs>
|
|
980
|
+
|
|
981
|
+
## Suspense
|
|
982
|
+
|
|
983
|
+
Perender Markdown Intlayer dimuat secara dinamis. Meskipun dioptimalkan, ukuran parser dasarnya sekitar 55kb. Memuat ini secara sinkron menunda perenderan halaman awal dan menurunkan First Contentful Paint (FCP).
|
|
984
|
+
|
|
985
|
+
Untuk mencegah pemblokiran UI, Intlayer terintegrasi dengan API Suspense dari React. Ia mengambil parser di latar belakang dan melempar Promise selama pengunduhan.
|
|
986
|
+
|
|
987
|
+
Bungkus komponen apa pun yang merender Markdown Intlayer di dalam batasan `<Suspense>`. Ini menampilkan status fallback yang dilokalkan saat chunk diunduh, memungkinkan sisa DOM Anda segera dirender.
|
|
988
|
+
|
|
989
|
+
Peringatan: Jika Anda tidak menyediakan batasan `<Suspense>`, React akan ditangguhkan pada tingkat root atau memblokir seluruh pohon komponen dari perenderan hingga chunk 55kb dimuat sepenuhnya.
|
|
990
|
+
|
|
991
|
+
<Tabs>
|
|
992
|
+
<Tab label="Next.js" value="nextjs">
|
|
993
|
+
|
|
994
|
+
Di Next.js App Router, Anda dapat menggunakan `Suspense` React untuk komponen klien atau file `loading.tsx` untuk komponen server.
|
|
995
|
+
|
|
996
|
+
**Komponen Klien:**
|
|
997
|
+
|
|
998
|
+
```tsx fileName="components/MyComponent.tsx"
|
|
999
|
+
"use client";
|
|
1000
|
+
import { useIntlayer } from "next-intlayer";
|
|
1001
|
+
import { Suspense } from "react";
|
|
1002
|
+
|
|
1003
|
+
const MyComponent = () => {
|
|
1004
|
+
const markdownContent = useIntlayer("my-markdown");
|
|
1005
|
+
|
|
1006
|
+
return (
|
|
1007
|
+
<Suspense fallback={<div>Loading...</div>}>{markdownContent}</Suspense>
|
|
1008
|
+
);
|
|
1009
|
+
};
|
|
1010
|
+
```
|
|
1011
|
+
|
|
1012
|
+
**Komponen Server dengan `loading.tsx`:**
|
|
1013
|
+
|
|
1014
|
+
```tsx fileName="app/loading.tsx"
|
|
1015
|
+
export default function Loading() {
|
|
1016
|
+
return <div>Loading...</div>;
|
|
1017
|
+
}
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
```tsx fileName="app/page.tsx"
|
|
1021
|
+
import { useIntlayer } from "next-intlayer/server";
|
|
1022
|
+
|
|
1023
|
+
const MyPage = () => {
|
|
1024
|
+
const markdownContent = useIntlayer("my-markdown");
|
|
1025
|
+
return <div>{markdownContent}</div>;
|
|
1026
|
+
};
|
|
1027
|
+
|
|
1028
|
+
export default MyPage;
|
|
1029
|
+
```
|
|
1030
|
+
|
|
1031
|
+
</Tab>
|
|
1032
|
+
|
|
1033
|
+
<Tab label="React" value="react">
|
|
1034
|
+
|
|
1035
|
+
```tsx
|
|
1036
|
+
import { useIntlayer } from "react-intlayer";
|
|
1037
|
+
import { Suspense } from "react";
|
|
1038
|
+
|
|
1039
|
+
const MyComponent = () => {
|
|
1040
|
+
const markdownContent = useIntlayer("my-markdown");
|
|
1041
|
+
|
|
1042
|
+
return (
|
|
1043
|
+
<Suspense fallback={<div>Loading...</div>}>{markdownContent}</Suspense>
|
|
1044
|
+
);
|
|
1045
|
+
};
|
|
1046
|
+
```
|
|
1047
|
+
|
|
1048
|
+
</Tab>
|
|
1049
|
+
|
|
1050
|
+
<Tab label="Vue" value="vue">
|
|
1051
|
+
|
|
1052
|
+
Vue memiliki komponen `<Suspense>` bawaan. Bungkus komponen yang merender konten Markdown dalam batasan `<Suspense>`.
|
|
1053
|
+
|
|
1054
|
+
```vue fileName="MyComponent.vue"
|
|
1055
|
+
<script setup>
|
|
1056
|
+
import { useIntlayer } from "vue-intlayer";
|
|
1057
|
+
|
|
1058
|
+
const { markdownContent } = useIntlayer("my-markdown");
|
|
1059
|
+
</script>
|
|
1060
|
+
|
|
1061
|
+
<template>
|
|
1062
|
+
<Suspense>
|
|
1063
|
+
<component :is="markdownContent" />
|
|
1064
|
+
<template #fallback>
|
|
1065
|
+
<div>Loading...</div>
|
|
1066
|
+
</template>
|
|
1067
|
+
</Suspense>
|
|
1068
|
+
</template>
|
|
1069
|
+
```
|
|
1070
|
+
|
|
1071
|
+
</Tab>
|
|
1072
|
+
<Tab label="Svelte" value="svelte">
|
|
1073
|
+
|
|
1074
|
+
Svelte tidak memiliki API Suspense yang setara. Gunakan blok `{#await}` untuk menangani perenderan asinkron dari konten Markdown.
|
|
1075
|
+
|
|
1076
|
+
```svelte fileName="MyComponent.svelte"
|
|
1077
|
+
<script lang="ts">
|
|
1078
|
+
import { useIntlayer } from "svelte-intlayer";
|
|
1079
|
+
|
|
1080
|
+
const content = useIntlayer("my-markdown");
|
|
1081
|
+
</script>
|
|
1082
|
+
|
|
1083
|
+
{#await $content.markdownContent}
|
|
1084
|
+
<div>Loading...</div>
|
|
1085
|
+
{:then rendered}
|
|
1086
|
+
{@html rendered}
|
|
1087
|
+
{/await}
|
|
1088
|
+
```
|
|
1089
|
+
|
|
1090
|
+
</Tab>
|
|
1091
|
+
<Tab label="Preact" value="preact">
|
|
1092
|
+
|
|
1093
|
+
Preact mendukung API Suspense React melalui `preact/compat`.
|
|
1094
|
+
|
|
1095
|
+
```tsx fileName="MyComponent.tsx"
|
|
1096
|
+
import { useIntlayer } from "preact-intlayer";
|
|
1097
|
+
import { Suspense } from "preact/compat";
|
|
1098
|
+
|
|
1099
|
+
const MyComponent = () => {
|
|
1100
|
+
const markdownContent = useIntlayer("my-markdown");
|
|
1101
|
+
|
|
1102
|
+
return (
|
|
1103
|
+
<Suspense fallback={<div>Loading...</div>}>{markdownContent}</Suspense>
|
|
1104
|
+
);
|
|
1105
|
+
};
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
</Tab>
|
|
1109
|
+
<Tab label="Solid" value="solid">
|
|
1110
|
+
|
|
1111
|
+
Solid memiliki komponen `<Suspense>` sendiri dari `solid-js`.
|
|
1112
|
+
|
|
1113
|
+
```tsx fileName="MyComponent.tsx"
|
|
1114
|
+
import { useIntlayer } from "solid-intlayer";
|
|
1115
|
+
import { Suspense } from "solid-js";
|
|
1116
|
+
|
|
1117
|
+
const MyComponent = () => {
|
|
1118
|
+
const { markdownContent } = useIntlayer("my-markdown");
|
|
1119
|
+
|
|
1120
|
+
return (
|
|
1121
|
+
<Suspense fallback={<div>Loading...</div>}>{markdownContent}</Suspense>
|
|
1122
|
+
);
|
|
1123
|
+
};
|
|
1124
|
+
```
|
|
1125
|
+
|
|
1126
|
+
</Tab>
|
|
1127
|
+
<Tab label="Angular" value="angular">
|
|
1128
|
+
|
|
1129
|
+
Angular tidak memiliki API Suspense. Gunakan tampilan yang ditangguhkan (`@defer`) milik Angular untuk menangani konten Markdown yang dimuat secara lambat (membutuhkan Angular 17+).
|
|
1130
|
+
|
|
1131
|
+
```typescript fileName="my.component.ts"
|
|
1132
|
+
import { Component } from "@angular/core";
|
|
1133
|
+
import { useIntlayer } from "angular-intlayer";
|
|
1134
|
+
|
|
1135
|
+
@Component({
|
|
1136
|
+
selector: "app-my",
|
|
1137
|
+
template: `
|
|
1138
|
+
@defer {
|
|
1139
|
+
<div [innerHTML]="content().markdownContent"></div>
|
|
1140
|
+
} @loading {
|
|
1141
|
+
<div>Loading...</div>
|
|
1142
|
+
}
|
|
1143
|
+
`,
|
|
1144
|
+
})
|
|
1145
|
+
export class MyComponent {
|
|
1146
|
+
content = useIntlayer("my-markdown");
|
|
1147
|
+
}
|
|
1148
|
+
```
|
|
1149
|
+
|
|
1150
|
+
</Tab>
|
|
1151
|
+
</Tabs>
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
## Referensi Opsi
|
|
1156
|
+
|
|
1157
|
+
Opsi ini dapat diteruskan ke `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer`, dan `renderMarkdown`.
|
|
1158
|
+
|
|
1159
|
+
| Option | Type | Default | Deskripsi |
|
|
1160
|
+
| :-------------------- | :---------- | :------ | :--------------------------------------------------------------------------------------------------- |
|
|
1161
|
+
| `forceBlock` | `boolean` | `false` | Memaksa output untuk dibungkus dalam elemen tingkat blok (mis., `<div>`). |
|
|
1162
|
+
| `forceInline` | `boolean` | `false` | Memaksa output untuk dibungkus dalam elemen sebaris (mis., `<span>`). |
|
|
1163
|
+
| `tagfilter` | `boolean` | `true` | Mengaktifkan GitHub Tag Filter untuk keamanan yang ditingkatkan dengan menghapus tag HTML berbahaya. |
|
|
1164
|
+
| `preserveFrontmatter` | `boolean` | `false` | Jika `true`, frontmatter di awal string Markdown tidak akan dihapus. |
|
|
1165
|
+
| `components` | `Overrides` | `{}` | Peta tag HTML ke komponen kustom (mis., `{ h1: MyHeading }`). |
|
|
1166
|
+
| `wrapper` | `Component` | `null` | Komponen kustom untuk membungkus Markdown yang dirender. |
|
|
1167
|
+
| `renderMarkdown` | `Function` | `null` | Fungsi perenderan kustom untuk sepenuhnya menggantikan kompilator Markdown default. |
|
|
@@ -224,7 +224,7 @@ Pendekatan ini memungkinkan Anda untuk:
|
|
|
224
224
|
|
|
225
225
|
Bintang GitHub adalah indikator kuat dari popularitas proyek, kepercayaan komunitas, dan relevansi jangka panjang. Meskipun bukan ukuran langsung dari kualitas teknis, bintang-bintang tersebut mencerminkan berapa banyak pengembang yang menganggap proyek tersebut berguna, mengikuti kemajuannya, dan kemungkinan akan mengadopsinya. Untuk memperkirakan nilai suatu proyek, bintang membantu membandingkan daya tarik di berbagai alternatif dan memberikan wawasan tentang pertumbuhan ekosistem.
|
|
226
226
|
|
|
227
|
-
[](https://www.star-history.com/#aymericzip/intlayer&formatjs/formatjs&i18next/react-i18next&i18next/i18next&i18next/next-i18next&lingui/js-lingui&amannn/next-intl&intlify/vue-i18n&codingcommons/typesafe-i18n&opral/paraglide-js)
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|