react-native-navigation的迁移库

FullScreenModalScreen.js 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const concat = require('lodash/concat');
  2. const last = require('lodash/last');
  3. const React = require('react');
  4. const Root = require('../components/Root');
  5. const Button = require('../components/Button')
  6. const Navigation = require('./../services/Navigation');
  7. const Screens = require('./Screens');
  8. const {
  9. PUSH_BTN,
  10. MODAL_SCREEN_HEADER,
  11. MODAL_BTN,
  12. DISMISS_MODAL_BTN
  13. } = require('../testIDs');
  14. class FullScreenModalScreen extends React.Component {
  15. static options() {
  16. return {
  17. statusBar: {
  18. visible: false
  19. },
  20. topBar: {
  21. testID: MODAL_SCREEN_HEADER,
  22. title: {
  23. text: 'Modal'
  24. }
  25. }
  26. };
  27. }
  28. render() {
  29. return (
  30. <Root componentId={this.props.componentId} footer={`Modal Stack Position: ${this.getModalPosition()}`}>
  31. <Button label='Show Modal' testID={MODAL_BTN} onPress={this.showModal} />
  32. <Button label='Dismiss Modal' testID={DISMISS_MODAL_BTN} onPress={this.dismissModal} />
  33. <Button label='Push' testID={PUSH_BTN} onPress={this.push} />
  34. </Root>
  35. );
  36. }
  37. showModal = () => {
  38. Navigation.showModal({
  39. component: {
  40. name: Screens.Modal,
  41. passProps: {
  42. modalPosition: this.getModalPosition() + 1,
  43. previousModalIds: concat([], this.props.previousModalIds || [], this.props.componentId)
  44. }
  45. }
  46. });
  47. }
  48. dismissModal = async () => await Navigation.dismissModal(this.props.componentId);
  49. push = () => Navigation.push(this, Screens.Pushed, {
  50. statusBar: {
  51. drawBehind: true,
  52. visible: false,
  53. backgroundColor: 'transparent',
  54. style: 'dark'
  55. },
  56. topBar: {
  57. drawBehind: true,
  58. visible: false
  59. }
  60. });
  61. getModalPosition = () => this.props.modalPosition || 1;
  62. getPreviousModalId = () => last(this.props.previousModalIds);
  63. }
  64. module.exports = FullScreenModalScreen;