簡體   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