用param调用函数时出错了

时间:2017-02-19 15:35:40

标签: javascript reactjs react-native

onTypeSelect (str) {
        this.setState({taskType: str})
    }

<TouchableOpacity onPress={this.onTypeSelect('type1').bind(this)}>
</TouchableOpacity>

undefined不是对象(评估'_this3.onTypeSelect('type1).bind')。

任何人都可以帮助我吗?我是反应原生的初学者。

2 个答案:

答案 0 :(得分:3)

试试这个

onTypeSelect (str) {
    this.setState({taskType: str})
}

<TouchableOpacity onPress={() => { this.onTypeSelect('type1'); }} />

当你.bind(this),你需要传递函数而不是函数的返回值,在本例中是undefined 。这种方式可行,因为函数是从组件范围内部调用的,因此使this成为有效的引用。

解决问题的另一种方法是以这种方式使用bind:

this.onTypeSelect.bind(this, 'type1')

编辑:感谢您的评论和其他回复,我为了完成和信息添加了信息。 Alexander T.Bartek F.

答案 1 :(得分:2)

根据.bind文档,您必须将参数传递给.bind,如此

this.onTypeSelect.bind(this, 'type1')
  

fun.bind(thisArg[, arg1[, arg2[, ...]]])

在您的示例中,您调用方法

this.onTypeSelect('type1')

该方法返回结果(在本例中结果将为undefined),并且您正尝试将.bind应用于结果undefined

undefined.bind(this)

.bind仅存在于Function对象中,这就是您收到错误的原因。

相关问题