Отправка реквизита обратно на любой экран с помощью кнопки «Назад» - PullRequest
0 голосов
/ 20 сентября 2019

Я только недавно работал с React-Native.По этой причине мне потребуется помощь в решении следующей проблемы:

Я переопределил действие кнопки «Назад» в заголовке стекового навигатора, чтобы перейти на любой экран.Я должен "отправить обратно" реквизит на экран ху.Я пробовал это на нескольких вариантах, но, к сожалению, получаю сообщения об ошибках (потому что это не работает так, как я хочу) или не получаю ожидаемый результат.Буду благодарен за решение.Спасибо!

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});
   }
}

1 Ответ

0 голосов
/ 21 сентября 2019

Если вы хотите отправить данные обратно на предыдущий экран, правильный способ - объявить обратный вызов на навигационных параметрах ( выпуск Github )

ScreenA

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();
       }
    />
...