从父组件

时间:2017-06-12 19:00:57

标签: reactjs react-native

我正在使用“refs”从父级调用子组件中的函数(checkAndErase),但无法使其工作。任何人都可以帮助我,因为我是新人做出反应。 Thanx提前 引发错误: “无法读取未定义的属性checkAndEarse()”

以下是我的父渲染功能:

  <View>
    <TouchableOpacity disabled={initing} onPress={this.refs.child.checkAndErase()} style={styles.actionButton}>
        <Text style={[styles.actionButtonText, initing && styles.disabled]}>
        Eraser
      </Text>
    </TouchableOpacity>
  </View>

  <Board puzzle={puzzle} ref={ref => {this.child = ref}} solve={this.solve} erasing={erasing} editing={editing}
  onInit={this.onInit.bind(this)} onErrorMove={this.onErrorMove} onFinish={this.onFinish}/>

2 个答案:

答案 0 :(得分:0)

您需要使用箭头函数语法来延迟绑定到子方法:

onPress={() => this.child.checkAndErase()}

答案 1 :(得分:0)

尝试使用ref的current对象。它包含react JS中子组件的所有详细信息(状态,属性,方法等等)。我希望react-native也是如此。

因此,imo应该是

onPress={() => this.child.current.checkAndErase()}

注意:您可能需要添加那些传统的空检查。即this.child.current && this.child.current.checkAndErase()

干杯!