Использование createRef в реагировать на натуре с машинописью?
Я пытаюсь понять, как мне нужно использовать React.createRef()
в реагировать на нативный с машинопись, как следующий код выдает ошибки
// ...
circleRef = React.createRef();
componentDidMount() {
this.circleRef.current.setNativeProps({
someProperty: someValue
});
}
// ...
В настоящее время следующие ошибки выбрасываются за this.circleRef.current.setNativeprops
[ts] Объект, возможно, 'нулевой'. (свойство) React.RefObject<{}>. current: {} | ноль
а также
[ts] Свойство 'setNativeProps' не существует для типа '{}'. любой
есть идеи?
1 ответ
Первая проблема может быть решена с нулевой проверкой, прежде чем продолжить с вашей логикой, так как React.createRef()
также может вернуться null
:
componentDidMount() {
if(this.circleRef !== null && this.circleRef.current !== null) {
this.circleRef.current.setNativeProps({
someProperty: someValue
});
}
}
Вторая проблема решается путем передачи имени класса элемента Node, для которого вы хотите создать ссылку. Например, если указанный вами элемент является <Text>
затем выполните:
circleRef = React.createRef<Text>();
Сюда, circleRef
будет правильно напечатан и setNativeProps
будет существовать в том и только в том случае, если указанный компонент напрямую поддерживается собственным представлением:
Методы
current
] доступны на большинстве компонентов по умолчанию, предоставляемых React Native. Однако обратите внимание, что они недоступны для составных компонентов, которые напрямую не поддерживаются собственным представлением. Обычно это включает большинство компонентов, которые вы определяете в своем собственном приложении. - Прямое манипулирование - Реакция родной документации
Вы можете добавить типизацию Typescript в React Native Ref следующим образом:
const textInputRef: React.RefObject<TextInput> = React.createRef();