【发布时间】:2023-03-29 12:50:02
【问题描述】:
其实我也不知道,这个问题怎么命名!
我有一个 React Native 中的 JS 文件,它从服务器获取数据并将其与本地数据库进行比较。我需要它同时运行,我该如何实现?当应用程序启动时,它应该运行,更改视图(导航到其他组件)不应该破坏它,它应该仍然在运行。
有什么解决办法吗?
【问题讨论】:
标签: javascript reactjs react-native react-router
其实我也不知道,这个问题怎么命名!
我有一个 React Native 中的 JS 文件,它从服务器获取数据并将其与本地数据库进行比较。我需要它同时运行,我该如何实现?当应用程序启动时,它应该运行,更改视图(导航到其他组件)不应该破坏它,它应该仍然在运行。
有什么解决办法吗?
【问题讨论】:
标签: javascript reactjs react-native react-router
您正在解释一种名为: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);
如果它为两个实例打印相同的时间,这意味着我们有一个工作单例。
现在,您可以在单例中异步加载服务器数据,然后做任何您想做的事情。每当您尝试访问单例类时,它将是同一个实例,并且不会被多次实例化。换句话说,它不会被销毁。
【讨论】:
我迟到了,但这可能对其他人有帮助,
一种选择是创建一个单例类。 但另一种选择是为您的导航文件创建一个容器。 > 导航容器只是一个以子为主的普通组件 导航器组件。
您在导航容器中的代码一直在运行。
我使用这样的导航容器..
export default function App() {
return (
<Provider store={store}>
<NavigationContainer />
</Provider>
);
}
我从这个导航容器返回导航器组件,例如 > this
return (
<AuthNavigator ref={navRef} />
);
【讨论】: