react-native-navigation的迁移库

BackHandlerModalScreen.js 1.5KB

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