Как изменить функцию с запуска при нажатии на запуск при загрузке приложения

#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) .