react-native-navigation的迁移库

SideMenuCenterScreen.js 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 {
  6. OPEN_LEFT_SIDE_MENU_BTN,
  7. OPEN_RIGHT_SIDE_MENU_BTN,
  8. CENTER_SCREEN_HEADER
  9. } = require('../testIDs');
  10. const Screens = require('./Screens');
  11. class SideMenuCenterScreen extends React.Component {
  12. static options() {
  13. return {
  14. topBar: {
  15. testID: CENTER_SCREEN_HEADER,
  16. title: {
  17. text: 'Center'
  18. },
  19. leftButtons: {
  20. id: 'sideMenu',
  21. icon: require('../../img/menu.png')
  22. }
  23. }
  24. };
  25. }
  26. constructor(props) {
  27. super(props);
  28. Navigation.events().bindComponent(this);
  29. }
  30. navigationButtonPressed({ buttonId }) {
  31. if (buttonId === 'sideMenu') this.open('left');
  32. }
  33. render() {
  34. return (
  35. <Root componentId={this.props.componentId}>
  36. <Button label='Open Left' testID={OPEN_LEFT_SIDE_MENU_BTN} onPress={() => this.open('left')} />
  37. <Button label='Open Right' testID={OPEN_RIGHT_SIDE_MENU_BTN} onPress={() => this.open('right')} />
  38. </Root>
  39. );
  40. }
  41. open = (side) => Navigation.mergeOptions(this, {
  42. sideMenu: {
  43. [side]: { visible: true }
  44. }
  45. });
  46. }
  47. module.exports = SideMenuCenterScreen;