代码之家  ›  专栏  ›  技术社区  ›  Hedge

无法在另一个方法内调用navigate

  •  0
  • Hedge  · 技术社区  · 8 年前

    我正在尝试使用react navigation导航到另一个屏幕。然而,通过这段代码,我得到了一个错误: undefined is not an object (evaluation 'this.props.navigation')

    navigate 直接(见底部示例)它可以工作。

    我做错了什么?

    这不起作用:

      _renderRow (rowData) {
        return (
          <View >
            <TouchableHighlight onPress={this._handlePress} underlayColor='white'>
                <Image
                  style={{width: 50, height: 50}}
                  source={{uri: 'http://openweathermap.org/img/w/' + rowData.iconName + '.png'}}
                />
            </TouchableHighlight>
          </View>
        )
      }
    
      _handlePress () {
        this.props.navigation.navigate('Details')
      }
    

    这确实有效:

      _renderRow (rowData) {
        return (
          <View >
            <TouchableHighlight onPress={() => this.props.navigation.navigate('Details')} underlayColor='white'>
                <Image
                  style={{width: 50, height: 50}}
                  source={{uri: 'http://openweathermap.org/img/w/' + rowData.iconName + '.png'}}
                />
            </TouchableHighlight>
          </View>
        )
      }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Gerardo    8 年前

    您需要绑定上下文。 onPress={this._handlePress.bind(this)}

    你必须注意 this 在JSX回调中。在里面 默认情况下,类方法不绑定。如果你忘了 this.handleClick 并将其传递给 onClick ,这将是 undefined

    以下是文档:

    Handling events

    推荐文章