Eug*_*ban 5 android react-native redux react-navigation
好吧,我有一个react-native
具有多个屏幕的应用程序,每个屏幕都有一个位于顶部的后退按钮所在的栏,它的主要行为是当按下此按钮时,应用程序返回到主屏幕。我想做的就是将此行为复制到硬件后退按钮(现在通过按下应用程序关闭的硬件后退按钮),我该怎么做?
更新:
我正在使用react-navigation
和redux
Jav*_*ies 10
你可以通过下面的例子来做
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;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以:
BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
handleBackButton(){
this.props.navigation.popToTop();
return true;
}
popToTop返回到堆栈中的第一个屏幕。
如果您在Redux中使用react-navigation,则应将popToTop实现为要分派的动作。
在功能组件中使用react Hooks实现:
useEffect(() => {
function handleBackButton() {
navigation.navigate('register-phone');
return true;
}
const backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackButton);
return () => backHandler.remove();
}, [navigation]);
Run Code Online (Sandbox Code Playgroud)
不要忘记在卸载时删除监听器。
归档时间: |
|
查看次数: |
7311 次 |
最近记录: |