我可以使用TouchableWithoutFeedback之类的Touchable代替在本机导航中对此this.props.navigation.navigate使用按钮吗

时间:2018-06-25 10:39:35

标签: react-native react-navigation

<TouchableWithoutFeedback onPress={()=>this.props.navigation.navigate('Home')} > 
    { 
        this.props.type!=='1' ? <Icon2 name="chevron-with-circle-left" size={28}/> 
                              : <Icon name='chevron-left' style={{ color: "#16527e" }} size={35}/>
    }
</TouchableWithoutFeedback>

这段代码显示了一个错误,指出this.props.navigation.navigate不是object。使用this.props.navigation.navigate进行导航需要按钮吗?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

否,没有必要。您可以为onPress使用任何功能。我认为问题是您的导航对象..它是否未定义?

尝试使用此代码并阅读记录的内容:

<TouchableWithoutFeedback
    onPress={()=> console.log("Navigation is :", this.props.navigation}> 
              { this.props.type!=='1'?
                <Icon2 name="chevron-with-circle-left" size={28}/> 
                : <Icon name='chevron-left' style={{ color: "#16527e" }} 
                  size={35}/>
              }
</TouchableWithoutFeedback>

确保导航包含“导航”功能,并在必要时甚至记录“ this.props.navigation.navigate”。

最后,确保正确配置了反应导航。

更多信息:如果您试图在演示组件内部使用导航,请确保导航是容器组件内部的对象,并向下传递导航作为道具。如果react-navigation打开页面XYZ,请确保navigation.navigate在XYZ中工作并将其作为道具传递给其他组件。 如果XYZ从反应导航路由打开,则它应具有this.props.navigation。 XYZ渲染ABC。 XYZ应该将this.props.navigation作为道具传递给ABC:

<ABC navigation = {this.props.navigation}/>