2017-08-11 9 views
0
componentDidMount(){ 

    logsAB(a,b){ 
    console.log(a,b); 
    } 
} 

renderListItems(listItem,key){ 
    var x = '1'; 
    var y = '2'; 

    return (
    <li key={key}> 
    <a href="#" className={key} onClick={() => this.logsAB(x,y)}>{blahblah.blah.foo}</a></li> 


) 
} 

「componentDidMount」内の関数を呼び出す際に間違っていますか?私は、HTMLのロード後にcomponentDidMountが起動するので、クリックしたハンドラはロードされた後に起動しなければならないと考えました。したがって、機能を利用可能にする。componentDidMount()内の関数にアクセスする

+0

あなたは 'componentDidMount'の中で関数を呼び出すのではなく、定義しています。 – MatTheWhale

答えて

0

componentDidMountは、メインのComponentクラスの関数です。 componentDidMount内部の機能は、次のようにだけ、あなたはthisスコープにそれらを結合していない限り、その関数にスコープされています

componentDidMount(){ 
    this.logsAB = (a, b) => { 
    console.log(a, b); 
    } 
} 

renderListItems(listItem, key){ 
    var x = '1'; 
    var y = '2'; 

    return (
    <li key={key}> 
    <a href="#" className={key} onClick={() => this.logsAB(x, y)}> 
     {blahblah.blah.foo} 
    </a> 
    </li> 
) 
} 

が動作することが、通常は、むしろ次の操作を行い、慣習に反応し従わない:

logsAB(a, b){ 
    console.log(a, b); 
} 

renderListItems(listItem, key){ 
    var x = '1'; 
    var y = '2'; 

    return (
    <li key={key}> 
    <a href="#" className={key} onClick={() => this.logsAB(x, y)}> 
     {blahblah.blah.foo} 
    </a> 
    </li> 
) 
} 

上記のコードは、this.logsABで呼び出されるように、コンポーネントスコープに関数logsABを配置します。 componentDidMountは、コンポーネントに関数を設定する必要はありません。

0

アクセス・機能・内部・オブ・componentdidmount

あなたはDOMからアクセスしたい場合は、これを行う必要がありいけません。

この方法では、非公開にしようとしています。

componentDidMount(){ 

    logsAB(a,b){ //private to componentDidMount.Not accessible outside 
    console.log(a,b); 
    } 
} 

このような動作が必要な場合は、カメラを外に置いてください。

logsAB(a,b){ 
     console.log(a,b); 
     } 

は、あなたはそれがthisに、その後bindそれにthisオブジェクトを提供します。

constructor(){ 
    this.logsAB = this.logsAB.bind(this); 
} 
+1

* "この方法では、プライベートにしようとしています。" *いいえ、無効な​​構文です。 –

+0

@FelixKlingはい.its無効です。このsyantxを使用してcomponentDidMountの外部にアクセスする方法はありません –

関連する問題