【问题标题】:onPress React navigation doesn't work for component inside StacknavigatoronPress React 导航不适用于 Stacknavigator 中的组件
【发布时间】:2018-07-02 19:08:59
【问题描述】:

大家好,Stacknavigator 我制作了一个组件并将其放在导航选项的 headerRight 中,因为我只能在那里显示一个图标。 只是一个包含三个图标的视图。但是,当我尝试使用 props.navigation.navigate 函数执行 onPress 时,我收到一条错误消息,提示未定义不是对象 this.props.navigation.navigate。我该如何解决这个问题?

export const HomeStack = StackNavigator({ Home: { screen: Tabs, navigationOptions: { headerStyle: { backgroundColor: '#a3a5ab', }, headerRight: <Headericons /> } },

类 Headericons 扩展 React.Component {

constructor(props) {
    super(props);
}


Shoppingcart= () => {
    this.props.navigation.navigate('Shoppingcart');
};


render() {

    return (
        <View style={{flexDirection: 'row', marginRight: 10}}>
          <TouchableWithoutFeedback
              onPress={()=> this.Shoppingcart() } >


            <Icon
                name={'shopping-cart'}
                size={30}
                color={'#ffffff'}
                style={{marginRight: 0, paddingRight: 10, flexDirection: 'row'}}

            />
          </TouchableWithoutFeedback>

【问题讨论】:

    标签: react-native react-native-android react-navigation react-native-ios stack-navigator


    【解决方案1】:

    看起来您需要将navigation 传递给组件。

    export const HomeStack = StackNavigator({
        Home: {
            screen: Tabs,
            navigationOptions: ({ navigation }) => ({
                headerStyle: {
                    backgroundColor: '#a3a5ab',
                },
                headerRight: <Headericons navigation={navigation} />
            })
        },
    })
    

    【讨论】:

    • 您好,感谢您的回复。你到底是什么意思?我试过这样做,但它仍然不起作用。 const navigation = this.props.navigation.navigate();export const HomeStack = StackNavigator({ Home: { screen: Tabs, navigationOptions: { headerStyle: { backgroundColor: '#a3a5ab', }, headerRight: &lt;Headericons navigation={navigation} /&gt;
    • 用更完整的代码示例编辑了我的答案
    • 更多详情,请查看reactnavigation.org/docs/navigators/…的文档
    • 我已经进行了进一步的编辑以修复一个语法错误,我错过了从胖箭头函数返回的对象周围的 ()
    • 嗯还是没有运气。我可以通过 git stash 将我的代码发送给您吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多