#react-native
#react-native
Вопрос:
Я пытаюсь создать приложение погоды, которое получает местоположение пользователя при открытии приложения. Мне был предоставлен начальный код, который использует кнопку, которая определяет местоположение пользователя при ее нажатии. Как я могу изменить код, чтобы он запускал содержимое функции _onPress при открытии приложения?
Мой начальный код:
import React, { Component } from "react";
import Button from "./../Button";
import styles from "./style.js";
const style = { backgroundColor: "#DDDDDD" };
class LocationButton extends Component {
_onPress() {
navigator.geolocation.getCurrentPosition(
initialPosition => {
this.props.onGetCoords(
initialPosition.coords.latitude,
initialPosition.coords.longitude
);
},
error => {
alert(error.message);
},
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
}
render() {
return (
<Button
label="Use Current Location"
style={style}
onPress={this._onPress.bind(this)}
/>
);
}
}
export default LocationButton;
Я читал, что componentWillMount () будет запускаться перед рендерингом, поэтому я попытался вставить следующий код после функции _onPress(), но я получил сообщение об ошибке «Не удается найти переменную: _onPress»
componentWillMount() {
_onPress();
}
Я уверен, что решение простое — я очень новичок в ReactNative. Я с удовольствием предоставлю любую дополнительную информацию, если потребуется. Спасибо!
Комментарии:
1. начальный код, который включен,
_inPress
должен выполняться наLoading
экране… и вы не перенаправляетесь на основной поток вашего приложения, пока не получите местоположение успешно
Ответ №1:
_onPress()
не существует, потому что она ни к чему не привязана до метода render. Просто _onPress()
на самом деле нигде не существует. Чтобы исправить это, измените _onPress()
на функцию со стрелкой, изменив объявление функции с _onPress(){}
на _onPress = () => {}
, затем вызовите ее componentDidMount
через this._onPress()
. Вам также придется изменить свой onPress
на onPress={this._onPress
}. Второй способ исправить это по-прежнему требует, чтобы вы изменили свой onPress
на onPress={this._onPress
} , но также создали конструктор и привязали к нему свою функцию, выполнив this.onPress = this.onPress.bind(this)
.