2016-12-23 92 views
2

我看起來像這樣的兩個功能:傳遞附加參數綁定?

primaryImageLoaded() { 
    this.setState({primaryImageLoaded: true}) 
    } 

    secondaryImageLoaded() { 
    this.setState({ secondaryImageLoaded: true }) 
    } 

他們被稱爲像這樣(使用反應):

onLoad={this.secondaryImageLoaded.bind(this) 

這種感覺過多的,我想只有一個功能,並通過狀態變量作爲參數,但我怎樣才能傳遞一個額外的參數到.bind?並且可以在我傳遞給setState的對象中使用變量作爲關鍵字?

+0

將您的參數添加爲綁定的第二個參數 –

+0

您是否查看了[bind for documentation](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind)? –

回答

3

您可以將額外的參數綁定,當你的函數被調用將被傳遞:

this.setState({ [myVar]: value });

this.secondaryImageLoaded.bind(this, arg1, arg2)

您可以通過在方括號包裹它使用一個變量作爲關鍵

所以,你可以重寫它更像:

function imageLoaded(which) { 
    this.setState({ 
     [which]: true 
    }); 
} 

onLoad={this.imageLoaded.bind(this, 'secondary')} 
+0

我從來沒有見過方括號的語法。你介意提供一個解釋或提供更多信息的網址嗎? – mangotang

+0

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names – ray