繁体   English   中英

使用后退按钮覆盖将道具发送回任何屏幕

[英]Sending props back to any screen using back button override

我最近只在使用 React-Native。 出于这个原因,我需要帮助解决以下问题:

我确实覆盖了堆栈导航器的 header 中的后退按钮操作,以导航到任何屏幕。 我必须将道具“发回”到屏幕 xy。 我已经在几个变体上尝试过,但不幸的是收到错误消息(因为它不能按我的意愿工作)或没有得到预期的结果。 我将不胜感激。 谢谢!

static navigationOptions = ({navigation}) => ({
        title: null,
        headerStyle: {backgroundColor: 'transparent'},
        headerLeft: <HeaderBackButton 
                        onPress={() => {
                          this.props.navigation.state.params.returnData(CurrentServiceProvider,'ServiceProvider')
                          navigation.push('digitalCode'),{ Info1: SomeObject, Info2: SomeObject }
                        }}
                     />

})

编辑:

屏幕 B:

export class ScreenB extends React.Component {

 static navigationOptions = ({navigation}) => ({
    title: null,
    headerStyle: {backgroundColor: 'transparent'},
    headerLeft: <HeaderBackButton onPress={() => {
        navigation.state.params.goBackData({SomeObject, 'ObjectIdentifier'});
        navigation.push('ScreenA')}
       }
    />
 })
}

屏幕 A:

export class ScreenA extends React.Component {

 getBackData = (data) => console.log(data)

 ForwardNextScreen(){
   this.props.navigation.navigate('ScreenB', {goBackData: this.getBackData});
   }
}

如果要将数据发送回上一个屏幕,正确的方法是在 navigationParams 上声明回调( Github 问题

屏幕A

getBackData = (data) => console.log(data)

changeScreen = () => this.props.navigation.navigate('ScreenB', { goBackData: this.getBackData })

屏幕B

this.props.navigation.state.params.goBackData({ 
//your data json or whatever
})
this.props.navigation.pop()

编辑

请更改您的从

headerLeft: <HeaderBackButton onPress={() => {
        navigation.state.params.goBackData({SomeObject, 'ObjectIdentifier'});
        navigation.push('ScreenA')}
       }
    />

headerLeft: <HeaderBackButton onPress={() => {
navigation.getParam('goBackData')({SomeObject, 'ObjectIdentifier'});
        navigation.pop();
       }
    />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM