2016-12-23 56 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