setState невозможно после размонтирования и монтирования ImagePicker - PullRequest
0 голосов
/ 01 июня 2019

In React Native

После ImagePicker (by Expo) вызывается для поиска фотографии в системе, вызывается размонтирование, а затем монтирование, и я не могу используйте setState .

Сообщение об ошибке:

Невозможно вызвать setState (или forceUpdate) для неустановленного компонента. Это не работает, но это указывает на утечку памяти в вашем приложении. Чтобы исправить, отмените все подписки и асинхронные задачи в методе componentWillUnmount. )

Все отлично работает на симуляторе iOS, потому что там нет размонтирования. Но на физическом Android это то, что я получаю.

Я новичок в React, так что, возможно, это очень просто, но я не мог понять, как это исправить из того, что я прочитал и наблюдал до сих пор.

Я пытался:

  • Установка функции, которая проверяет состояние isMount, а затем вызывает setState. Но оно всегда размонтировано.

  • Я не нашел никакой информации в документе ImagePicker на выставке

class SignUpStep2 extends Component {

   _pickPhoto = async () => {

      let result = await ImagePicker.launchImageLibraryAsync({
         allowsEditing: true,
         aspect: [4, 3],
      })

      if (!result.cancelled) {
         this.setState({ property: value });
      }
   }

   _askPhotoPermissions = async () => {
      const permission = await Permissions.getAsync(Permissions.CAMERA_ROLL)
      if (permission.status !== 'granted') {
 // Set alert message to ask to go to settings
      } else {
         this._pickPhoto()
      }
   }

   render() {
      return(
         <Button onPress={() => this._askPhotoPermissions()}>Change photo</Button>
      );
   }
}

Я ожидаю успешного использования setState ({}). Я уверен, что это просто, но я не мог выяснить ответ днем.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...