<script>
Komponen <script>
bawaan browser memungkinkan Anda menambahkan skrip di dokumen anda.
<script> alert("hi!") </script>
Referensi
<script>
Untuk menambahkan eksternal atau sisipan skrip pada document, render komponen bawaan <script>
. Kamu bisa render <script>
dari komponen apapun dan React dalam kasus tertentu akan menempatkan elemen DOM yang sesuai isi di kepala dokumen dan menghapus duplikat skrip yang identik.
<script> alert("hi!") </script>
<script src="script.js" />
Lihat contoh lainnya di bawah.
Props
<script>
mendukung segala props elemen umum.
Seharusnya memiliki salah satu children
atau src
prop.
children
: sebuah string. Sumber kode skrip sisipan.src
: sebuah string. URL dari eksternal skrip.
props lain yang didukung:
async
: sebuah boolean. Mengizinkan browser menunda eksekusi skrip hingga seluruh dokumen telah diproses — perilaku yang lebih baik untuk performa.crossOrigin
: sebuah string. aturan CORS yang digunakan. Nilai yang memungkinkan adalahanonymous
danuse-credentials
.fetchPriority
: sebuah string. Memungkinkan browser memberikan peringkat skrip pada prioritas saat mengambil beberapa skrip secara bersamaan. Dapat berupa"high"
,"low"
, atau"auto"
(nilai bawaan).integrity
: sebuah string. Hash kriptografi dari skrip, untuk memverifikasi keaslian.noModule
: sebuah boolean. Menonaktifkan skrip di browser yang mendukung modul ES — memungkinkan skrip cadangan untuk browser yang tidak mendukungnya.nonce
: sebuah string. Kriptografi nonce untuk mengizinkan sumber daya saat menggunakan sebuah aturan yang ketat mengenai Content Security.referrer
: sebuah string. Mengatakan apa kepala Referer yang mau dikirim saat mengambil skrip dan sumber daya apa pun yang diambil oleh skrip secara bergantian.type
: sebuah string. Apakah script ini merupakanklasik skrip, modul ES, or import map.
Props yang menonaktifkan perlakuan khusus pada skrip React:
onError
: sebuah fungsi. Dipanggil saat skrip gagal dimuat.onLoad
: sebuah fungsi. Dipanggil saat skrip telah berhasil dimuat.
Props yang tidak direkomendasikan untuk digunakan di React:
blocking
: sebuah string. Jika dipasang ke"render"
, memerintahkan browser untuk tidak merender halaman sampai lembar skrip dimuat. React memberikan kontrol yang lebih halus menggunakan Suspense.defer
: sebuah string. Mencegah browser menjalankan skrip hingga dokumen selesai dimuat. Tidak kompatibel dengan komponen yang dirender oleh server streaming. Gunakan propasync
sebagai gantinya.
Perilaku rendering khusus
React dapat memindahkan komponen <script>
ke <head>
dokumen dan menghapus duplikat skrip yang identik.
Untuk ikut dalam perilaku ini, berikan props src
dan async={true}
. React akan menghapus duplikat skrip jika skrip tersebut memiliki src
yang sama. Prop async
harus benar agar skrip dapat dipindahkan dengan aman.
Perlakuan khusus ini disertai dengan dua peringatan:
- React akan mengabaikan perubahan pada props setelah skrip dirender. (React akan mengeluarkan peringatan dalam pengembangan jika ini terjadi.)
- React mungkin meninggalkan skrip di DOM bahkan setelah komponen yang merendernya telah dilepas. (Ini tidak berpengaruh karena skrip hanya dijalankan satu kali ketika dimasukkan ke dalam DOM.)
Penggunaan
Merender skrip eksternal
Jika suatu komponen bergantung pada skrip tertentu agar dapat ditampilkan dengan benar, Anda dapat merender <script>
di dalam komponen tersebut.
Namun, komponen mungkin dikomit sebelum skrip selesai dimuat.
Anda dapat mulai bergantung pada konten skrip setelah acara load
diaktifkan, mis. dengan menggunakan prop onLoad
.
React akan menghapus duplikat skrip yang memiliki src
yang sama, hanya memasukkan salah satu skrip tersebut ke dalam DOM meskipun beberapa komponen merendernya.
import ShowRenderedHTML from './ShowRenderedHTML.js'; function Map({lat, long}) { return ( <> <script async src="map-api.js" onLoad={() => console.log('script loaded')} /> <div id="map" data-lat={lat} data-long={long} /> </> ); } export default function Page() { return ( <ShowRenderedHTML> <Map /> </ShowRenderedHTML> ); }
Merender skrip sisipan
Untuk menyertakan skrip inline, render komponen <script>
dengan kode sumber skrip sebagai turunannya. Skrip sebaris tidak dihapus duplikatnya atau dipindahkan ke dokumen <head>
.
import ShowRenderedHTML from './ShowRenderedHTML.js'; function Tracking() { return ( <script> ga('send', 'pageview'); </script> ); } export default function Page() { return ( <ShowRenderedHTML> <h1>My Website</h1> <Tracking /> <p>Welcome</p> </ShowRenderedHTML> ); }