在我的代码中,
import A from './A'
import B from './B'
export default class App extends React.Component{
constructor(){
console.log(B.getInstance()); // Why A.getInstance() got called ???
}
}
A.js(B.js 相同)
export default class A extends React.Component{
static instance = null;
static getInstance(){
return A.constructor.instance;
}
componentWillMount(){
A.constructor.instance = this;
}
}
我的类 A 和 B 都有“静态 getInstance() 方法”。 在这里,我调用了“B 类”,但调用了 A 的 getInstance()。这里发生了什么?
我应该避免对静态方法使用相同的方法名称吗?
谢谢。
编辑
我可能错误地发布了我的问题。 我发布了一个新问题以明确我的问题是什么。谢谢。
The name of static method in javascript should not be duplicated? (on React Native)
最佳答案
让我猜猜您正在渲染组件A,然后渲染组件B。由于两个组件都扩展了为它们共享的相同父级(React.Component)构造函数。这意味着如果您将任何内容存储为构造函数的属性,它将与所有子组件共享。
class A {}
class B extends A {
static setSharedKey (){
return B.constructor.sharedKey= 123
}
}
class C extends A {
static getSharedKey (){
return C.constructor.sharedKey
}
}
所以如果你打电话。
B.setSharedKey()
然后
C.getSharedKey() //123
你将得到这样的输出
<小时/>提供如何解决此问题的建议我想知道为什么您尝试从静态方法获取实例
关于javascript - javascript es6 中的静态方法发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47957173/