![](/img/trans.png)
[英]Prevent user from swipe back or using physical back button to go back to splash screen
[英]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.