react-native-navigation的迁移库

LifecycleScreen.js 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const React = require('react');
  2. const Root = require('../components/Root');
  3. const Button = require('../components/Button');
  4. const Navigation = require('../services/Navigation');
  5. const Screens = require('./Screens');
  6. const {
  7. PUSH_TO_TEST_DID_DISAPPEAR_BTN,
  8. DISMISS_MODAL_BTN,
  9. POP_BTN
  10. } = require('../testIDs');
  11. class LifecycleScreen extends React.Component {
  12. static options() {
  13. return {
  14. topBar: {
  15. title: {
  16. text: 'Lifecycle Screen'
  17. }
  18. }
  19. }
  20. }
  21. state = {
  22. text: 'nothing yet'
  23. };
  24. constructor(props) {
  25. super(props);
  26. Navigation.events().bindComponent(this);
  27. }
  28. componentDidAppear() {
  29. this.setState({ text: 'didAppear' });
  30. }
  31. componentDidDisappear() {
  32. alert('didDisappear'); // eslint-disable-line no-alert
  33. }
  34. componentWillUnmount() {
  35. setTimeout(() => {
  36. alert('componentWillUnmount'); // eslint-disable-line no-alert
  37. }, 100);
  38. }
  39. navigationButtonPressed(id) {
  40. alert(`navigationButtonPressed: ${id}`); // eslint-disable-line no-alert
  41. }
  42. render() {
  43. return (
  44. <Root componentId={this.props.componentId} footer={this.state.text}>
  45. <Button label='Push to test didDisappear' testID={PUSH_TO_TEST_DID_DISAPPEAR_BTN} onPress={this.push} />
  46. {this.renderCloseButton()}
  47. </Root>
  48. );
  49. }
  50. renderCloseButton = () => this.props.isModal ?
  51. <Button label='Dismiss' testID={DISMISS_MODAL_BTN} onPress={this.dismiss} /> :
  52. <Button label='Pop' testID={POP_BTN} onPress={this.pop} />;
  53. push = () => Navigation.push(this, Screens.Pushed);
  54. pop = () => Navigation.pop(this);
  55. dismiss = () => Navigation.dismissModal(this);
  56. }
  57. module.exports = LifecycleScreen;