首页 > 解决方案 > 将函数传递给子组件反应原生

问题描述

我尝试将 onChangeText() 传递给反应原生的子组件,它的工作原理:

onChangText(value){
    console.log(value)
}

render() {

    return (

        <View style={{flex:1}}>
            <Ui  
                onChangeText={this.onChangText()}  
            />
        </View>
    )
}

但是当我调用其他函数(在父函数中)时,如下所示:

loger(value){
    console.log(value)
}
onChangText(value){
    this.loger(value)
}

render() {

    return (

        <View style={{flex:1}}>
            <Ui  
                onChangeText={this.onChangText()}
            />
        </View>  
    )
} 

我收到错误:this.loger 不是函数

在此处输入图像描述

标签: javascriptnode.jsreact-native

解决方案


你需要注意的两件事

首先,在将函数传递给孩子时,您无需调用它,只需传递引用即可

 <Ui  
      onChangeText={this.onChangText}
 />

其次,当您需要this在被调用函数中使用关键字时,您应该将函数绑定到正确的上下文。在您的情况下,您需要将其绑定到父类的上下文,因此您可以为此目的使用箭头函数

onChangText = (value) => {
    this.loger(value)
}

推荐阅读