Javascript 设置图像选择器后不可能的状态';让我们卸载和装载

Javascript 设置图像选择器后不可能的状态';让我们卸载和装载,javascript,reactjs,react-native,expo,Javascript,Reactjs,React Native,Expo,以自然反应 调用ImagePicker(由Expo提供)在系统上查找照片后,将调用unmount然后mount,我无法使用setState。 错误消息: 无法对未安装的组件调用setState(或forceUpdate)。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。) 在iOS模拟器上一切正常,因为没有卸载。 但在物理Android上,这就是我得到的 我是一个新手,所以这可能很简单,但我不明白如何从我

以自然反应

调用ImagePicker(由Expo提供)在系统上查找照片后,将调用unmount然后mount,我无法使用setState。 错误消息:

无法对未安装的组件调用setState(或forceUpdate)。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。)

在iOS模拟器上一切正常,因为没有卸载。 但在物理Android上,这就是我得到的

我是一个新手,所以这可能很简单,但我不明白如何从我所阅读和观看的内容中修复它

我试过:

  • 设置一个检查isMount状态的函数,然后调用setState。但它总是卸载

  • 我在世博会上找不到ImagePicker文档的任何信息

类SignUpStep2扩展组件{
_pickPhoto=async()=>{
让结果=等待ImagePicker.launchImageLibraryAsync({
允许编辑:对,
相位:[4,3],
})
如果(!result.cancelled){
this.setState({property:value});
}
}
_askPhotoPermissions=async()=>{
const permission=wait Permissions.getAsync(Permissions.CAMERA\u ROLL)
if(permission.status!==“已授予”){
//将警报消息设置为要求转到设置
}否则{
这个._pickPhoto()
}
}
render(){
返回(
这是.\u askPhotoPermissions()}>更改照片
);
}
}
我希望成功地使用setState({})。我相信这很简单,但我无法在一个下午内找到答案


提前感谢您

您能再添加一些代码吗?包含图像选择器代码的包装器(屏幕)组件?@NishantNair添加,希望更清晰!你能再添加一些代码吗?包含图像选取器代码的包装器(屏幕)组件?@NishantNair添加,希望更清楚!
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>
      );
   }
}