javascript - javascript es6 中的静态方法发生了什么?

标签 javascript reactjs ecmascript-6

在我的代码中,

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/

相关文章:

javascript - jQuery 代码不更新数据库中的字段或更新下拉列表

javascript - JavaScript 新手,简单的 if 函数

javascript - 使用 ref 和 select 标签对下拉菜单使用react

html - 将鼠标悬停在表格内的目标 DIV

css - 如何在带有 css 模块的 React 组件中使用 @apply

typescript - ES6 与 TypeScript 中的泛型类型混合

javascript - 画一个箭头 HummusJS

javascript - 如何将类组件转换为函数无状态组件?

javascript - 浏览器支持 Javascript 中的类语法

javascript - 为什么不能以这种方式实例化迭代器?