我在React Native中有下一个问题:
我有下一个类,假设它是A
,看起来像这样:
export default class A {
static shared = A.shared || new A()
constructor() {
console.log('in constructor')
testFunction()
}
testFunction = () => {
console.log('in test function')
}
testFunction2 = () => {
console.log('in test function 2')
}
}
我的A
类在B
类中使用,如下所示:
export default class B {
static shared = B.shared || new B()
makeAPIRequest = (parameters, valueCallback, errorCallback) => {
console.log('in B req')
A.shared.testFunction2()
}
}
App.js
中使用的B
类中的makeApiRequest
函数如下:
const makeRequest = () => {
B.shared.makeAPIRequest(parameters, responseCallback => {
// do logic here...
}, errorCallback => {
// do logic here
})
}
并且该makeRequest
函数被放置为onPress
动作。
我的问题是:在应用程序的第一次渲染时,我的constructor
console.log和调用的函数console.log会在终端中打印出来。这不应该发生在我调用makeRequest
之前吗?函数是App.js
,它从实例化A
类的B
类调用makeAPIRequest
如果有人能向我解释这背后的逻辑,我将不胜感激。
A
被实例化为其自身的静态依赖项,所以基本上这是在类加载后发生的,如果你想让它延迟实例化,你需要做一些事情,比如:
class A {
static get shared() {
if (!this.__instance) {
this.__instance = new this();
}
return this.__instance;
}
//....
}