如何解决如何防止未安装组件中的Promise分辨率重新加载React Native中的已安装组件
我有一个Initialising
屏幕,该屏幕查询API端点,并在查询返回状态后导航到我的Home
屏幕。这可能会花费一些时间,因此在此屏幕上我有一个计时器,如果查询没有解决,经过一定时间后,它会导航到主屏幕。
问题是主屏幕安装了两次。我最好的猜测是,它会在计时器超时时挂载一次,并在API端点解析后再次挂载。
这是一些代码来说明。
class Initialising extends React.Component {
constructor(props) {
this.state = {
timeoutId: null,timedOut: false
}
}
async componentDidMount() {
await this.queryAPI()
if (!this.state.timedOut) {
navigateToHome();
}
}
async queryAPI = () => {
this.initialiseTimer()
await someAsyncOperation()
// if this resolves before timeout disable timer
this.disableTimer()
// some more logic
...
}
handleTimeout = async () => {
this.setState({ ...this.state,timedOut: true });
navigateToHome();
}
initialiseTimer = (time = 20000) => {
const timeoutId = setTimeout(this.handleTimeout,time);
this.setState({ ...this.state,timeoutId });
}
...
}
一旦我在Initialising
函数中离开handleTimeout
组件,是否有一种方法可以从本质上杀死Home
组件,以使得queryAPI
组件不会重新安装在承诺解决方案中Home
?另外,我是否可以使用不需要Home
屏幕加载两次的其他方法来实现所需的行为?
请注意,这是为什么"%V"
组件安装两次的最佳猜测。如果有人有其他假设,我想知道。谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。