我实际上不知道,如何命名这个问题!
我有一个反复本机的JS文件,它从服务器获取数据并将其与本地数据库进行比较。我需要这个同时运行,我怎么能实现这一目标?当应用程序启动时,应该运行,更改视图(导航到其他组件)不应该销毁它,它应该仍在运行。
任何解决方案?
答案 0 :(得分:10)
您正在解释一种名为Singleton。
的设计模式以下是如何操作:
let instance = null;
class Singleton{
constructor() {
if(!instance){
instance = this;
}
// to test whether we have singleton or not
this.time = new Date()
return instance;
}
}
测试单身人士 在上面的课程中,我们定义了一个时间属性,以确保我们有单例正常工作。
let singleton = new Singleton()
console.log(singleton.time);
setTimeout(function(){
let singleton = new Singleton();
console.log(singleton.time);
},4000);
如果它为两个实例打印相同的时间,则意味着我们有一个工作单例。
现在,您可以在单例内异步加载服务器数据,并执行您想要执行的任何操作。无论何时尝试访问单例类,它都将是同一个实例,并且不会多次实例化。换句话说,它不会被破坏。
答案 1 :(得分:0)
我参加聚会很晚,但这可能会对其他人有所帮助
一个选择是制作单例课程。 但是另一个选择是为您的Navigations文件创建一个容器。 >导航容器只是一个普通的组件,其子组件是主要组件 导航器组件。
导航容器中的代码一直在运行。
我这样使用导航容器。
export default function App() {
return (
<Provider store={store}>
<NavigationContainer />
</Provider>
);
}
然后从此导航容器中返回导航器组件,例如> this
return (
<AuthNavigator ref={navRef} />
);