我有一个带有多个屏幕的react-native
应用程序,每个屏幕上都有一个上栏,其中有一个后退按钮,它的主要行为是,当按下这个按钮时,应用程序返回到主屏幕。我想要做的是将这种行为复制到“硬件后退”按钮(现在按下“硬件后退”按钮,应用程序就会关闭),我该如何做呢?
更新:
我用的是react-navigation
和redux
发布于 2018-06-08 13:11:06
您可以:
BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
handleBackButton(){ this.props.navigation.popToTop(); return true; }
popToTop返回到堆栈中的第一个屏幕。
如果您使用react导航和Redux,您应该将popToTop实现为要调度的操作。
发布于 2018-06-08 13:13:22
你可以通过下面的例子来做
import { BackHandler } from 'react-native';
class App extends Component {
constructor(props){
super(props);
this.backButtonClick = this.backButtonClick.bind(this);
}
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.backButtonClick);
}
componentWillUnmount(){
BackHandler.removeEventListener('hardwareBackPress', this.backButtonClick);
}
backButtonClick(){
if(this.props.navigation && this.props.navigation.goBack){
this.props.navigation.goBack(null);
return true;
}
return false;
}
}
发布于 2020-12-03 10:09:04
在功能组件中使用react Hooks实现:
useEffect(() => {
function handleBackButton() {
navigation.navigate('register-phone');
return true;
}
const backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackButton);
return () => backHandler.remove();
}, [navigation]);
不要忘记删除卸载.上的侦听器
基于react本机文档。
https://stackoverflow.com/questions/50761125
复制相似问题