2017-12-24 5 views
0

javascript es6のStaticメソッドでは何が起こっていますか?この私のコードで

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)

+0

より完全な例を提供してください。 [mcve] – TheGiantBeast

+0

を参照して、AとBのコードを提供できますか? –

+0

A.jsとB.jsは同じ内容なので、クラスを複数回定義しているようです。 –

答えて

1

私はあなたがコンポーネント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 

あなたはこの問題を解決するためにどのようなアドバイスを与えるために、この


のような出力を持つことになりますが、インスタンスを取得しようとしている理由を知りたいIl'd静的メソッドの

+0

私は、私は完全なコードで新しい質問を投稿しました。あなたもそれを見ることができれば感謝します。本当にありがとう。 https://stackoverflow.com/questions/47961656/the-name-of-static-method-in-javascript-should-not-be-duplicated-on-react-nati –

+1

こんにちは@BrightLee私はその質問に答えましたに。 https:// stackoverflow。com/questions/47961656 /静的メソッドの名前はjavascriptですべきではありません/ 47963571#47963571 私は何かを混乱させると自由にコメントを残してください – davo11122

+0

あなたの助けをありがとう。ほんとうにありがとう。 –

関連する問題