createRef
createRef
membuat sebuah objek ref yang menyimpan nilai apa pun.
class MyInput extends Component {
inputRef = createRef();
// ...
}
Referensi
createRef()
Panggil createRef
untuk mendeklarasikan sebuah ref di dalam sebuah komponen kelas.
import { createRef, Component } from 'react';
class MyComponent extends Component {
intervalRef = createRef();
inputRef = createRef();
// ...
Lihat contoh lebih banyak di bawah.
Parameter
createRef
tidak memerlukan parameter.
Kembalian
createRef
mengembalikan sebuah objek dengan properti tunggal:
current
: Awalnya, bernilainull
. Anda dapat menggantinya dengan nilai lain kemudian. Jika Anda mengoper objek ref ke React sebagai sebuah atributref
di dalam simpul JSX, React akan menetapkannya sebagai properticurrent
.
Caveats
createRef
selalu mengembalikan objek yang berbeda. Sama halnya dengan menulis{ current: null }
manual.- Dalam komponen fungsi, Anda mungkin menginginkan
useRef
yang selalu mengembalikan obyek yang sama. const ref = useRef()
sama denganconst [ref, _] = useState(() => createRef(null))
.
Penggunaan
Mendeklarasikan sebuah ref di dalam komponen kelas
Untuk mendeklarasikan ref di dalam sebuah komponen kelas, panggil createRef
dan tetapkan hasilnya ke anggota (field) kelas:
import { Component, createRef } from 'react';
class Form extends Component {
inputRef = createRef();
// ...
}
Jika Anda mengoper ref={this.inputRef}
ke sebuah <input>
di dalam JSX Anda, React akan menempatkan input simpul DOM ke this.inputRef.current
. Ini Contohnya bagaimana Anda membuat tombol yang memfokuskan ke input:
import { Component, createRef } from 'react'; export default class Form extends Component { inputRef = createRef(); handleClick = () => { this.inputRef.current.focus(); } render() { return ( <> <input ref={this.inputRef} /> <button onClick={this.handleClick}> Focus the input </button> </> ); } }
Alternatif
Migrasi dari kelas dengan createRef
ke fungsi dengan useRef
Kami merekomendasikan untuk menggunakan komponen fungsi dari pada komponen kelas pada kode baru. Jika Anda memiliki komponen kelas yang menggunakan createRef
, ini cara bagaimana mengubahnya. Ini merupakan kode awal:
import { Component, createRef } from 'react'; export default class Form extends Component { inputRef = createRef(); handleClick = () => { this.inputRef.current.focus(); } render() { return ( <> <input ref={this.inputRef} /> <button onClick={this.handleClick}> Focus the input </button> </> ); } }
Saat Anda mengubah komponen ini dari kelas ke fungsi, ganti pemanggilan createRef
dengan useRef
:
import { useRef } from 'react'; export default function Form() { const inputRef = useRef(null); function handleClick() { inputRef.current.focus(); } return ( <> <input ref={inputRef} /> <button onClick={handleClick}> Focus the input </button> </> ); }