createRef¶
createRef
в основном используется для компонентов класса. Функциональные компоненты обычно полагаются на useRef
.
createRef
создает объект ref, который может содержать произвольное значение.
1 2 3 4 |
|
Описание¶
createRef()
¶
Вызовите createRef
для объявления ссылки внутри компонента класса.
1 2 3 4 5 6 7 |
|
Параметры¶
createRef
не принимает никаких параметров.
Возвращает¶
createRef
возвращает объект с одним свойством:
current
: Изначально оно установлено вnull
. Позже вы можете установить его в другое значение. Если вы передадите объект ref в React как атрибутref
узла JSX, React установит его свойствоcurrent
.
Предостережения¶
createRef
всегда возвращает различный объект. Это эквивалентно написанию{ current: null }
самостоятельно.- В компоненте функции, вероятно, вместо этого вам нужен
useRef
, который всегда возвращает один и тот же объект. const ref = useRef()
эквивалентноconst [ref, _] = useState(() => createRef(null))
.
Использование¶
Объявление ссылки в компоненте класса¶
Чтобы объявить реф внутри компонента класса, вызовите createRef
и присвойте его результат полю класса:
1 2 3 4 5 6 7 |
|
Если теперь вы передадите ref={this.inputRef}
к <input>
в вашем JSX, React заполнит this.inputRef.current
входным DOM-узлом. Например, вот как сделать кнопку, которая фокусирует ввод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
createRef
в основном используется для компонентов класса. Функциональные компоненты обычно полагаются на useRef
.
Альтернативы¶
Переход от класса с createRef
к функции с useRef
¶
Мы рекомендуем использовать компоненты функций вместо компонентов классов в новом коде. Если у вас есть некоторые существующие компоненты классов, использующие createRef
, вот как их можно преобразовать. Это оригинальный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Когда вы преобразуете этот компонент из класса в функцию, замените вызовы createRef
на вызовы useRef
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|