react-native-navigation的迁移库

BackHandlerModalScreen.js 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const React = require('react');
  2. const { Component } = require('react');
  3. const { View, Text, Button, BackHandler } = require('react-native');
  4. class BackHandlerModalScreen extends Component {
  5. static get options() {
  6. return {
  7. topBar: {
  8. title: 'Back Handler'
  9. }
  10. };
  11. }
  12. constructor(props) {
  13. super(props);
  14. this.backHandler = () => {
  15. this.setState({
  16. backPress: 'Back button pressed!'
  17. });
  18. return true;
  19. };
  20. this.state = {
  21. backPress: ''
  22. };
  23. }
  24. render() {
  25. return (
  26. <View style={styles.root}>
  27. <Text style={styles.h1}>{`Back Handler Screen`}</Text>
  28. <Text style={styles.h2}>{this.state.backPress}</Text>
  29. <Button title='add back handler' onPress={() => this.addBackHandler()} />
  30. <Button title='remove back handler' onPress={() => this.removeBackHandler()} />
  31. </View>
  32. );
  33. }
  34. addBackHandler() {
  35. BackHandler.addEventListener('hardwareBackPress', this.backHandler);
  36. }
  37. removeBackHandler() {
  38. BackHandler.removeEventListener('hardwareBackPress', this.backHandler);
  39. }
  40. componentWillUnmount() {
  41. BackHandler.removeEventListener('hardwareBackPress', this.backHandler);
  42. }
  43. }
  44. const styles = {
  45. root: {
  46. flex: 1,
  47. backgroundColor: 'white',
  48. justifyContent: 'center',
  49. alignItems: 'center'
  50. },
  51. h2: {
  52. fontSize: 12,
  53. textAlign: 'center',
  54. margin: 10
  55. },
  56. footer: {
  57. fontSize: 10,
  58. color: '#888',
  59. marginTop: 10
  60. }
  61. };
  62. module.exports = BackHandlerModalScreen;