2017-08-11 110 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'中的函數嗎?自從componentDidMount在html加載後觸發後,我認爲點擊處理器應該在加載後觸發。從而使該功能可用。訪問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> 
) 
} 

上述代碼將函數logsAB放置在組件作用域上,讓它通過this.logsAB進行調用。不需要在組件上設置功能。

0

訪問-A-函數裏面-的-componentdidmount

你不需要做,如果你想從DOM訪問它。

使用這種方法,您試圖使其變爲私人。

componentDidMount(){ 

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

如果你想要這樣的行爲,你可以把它放在外面。

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

如果你想提供this對象到它,然後bindthis

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

*「使用這種方式,您試圖使其變爲私人。」*不,它的語法無效。 –

+0

@FelixKling yes.its invalid.But有效,因爲無法使用此syantx在componentDidMount之外訪問它 –

相關問題