react-native-navigation的迁移库

SideMenuLeftScreen.js 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const React = require('react');
  2. const { useEffect } = require('react');
  3. const Root = require('../components/Root');
  4. const Button = require('../components/Button')
  5. const Navigation = require('../services/Navigation');
  6. const Screens = require('./Screens');
  7. const {
  8. LEFT_SIDE_MENU_PUSH_BTN,
  9. CLOSE_LEFT_SIDE_MENU_BTN,
  10. LEFT_SIDE_MENU_PUSH_AND_CLOSE_BTN
  11. } = require('../testIDs');
  12. function SideMenuLeftScreen(props) {
  13. useEffect(() => {
  14. const componentDisappearListener = Navigation.events().registerComponentDidDisappearListener(
  15. ({ componentId }) => {
  16. if (componentId === props.componentId) {
  17. console.log('RNN', `componentDisappearListener ${componentId}/${JSON.stringify(props)}`);
  18. }
  19. },
  20. );
  21. return () => {
  22. componentDisappearListener.remove();
  23. };
  24. }, []);
  25. const push = () => Navigation.push('SideMenuCenter', Screens.Pushed);
  26. const pushAndClose = () => Navigation.push('SideMenuCenter', {
  27. component: {
  28. name: Screens.Pushed,
  29. options: {
  30. sideMenu: {
  31. left: {
  32. visible: false
  33. }
  34. }
  35. }
  36. }
  37. });
  38. const close = () => Navigation.mergeOptions(props.componentId, {
  39. sideMenu: {
  40. left: { visible: false }
  41. }
  42. });
  43. return (
  44. <Root componentId={props.componentId} style={{ marginTop: props.marginTop || 0 }}>
  45. <Button label='Push' testID={LEFT_SIDE_MENU_PUSH_BTN} onPress={push} />
  46. <Button label='Push and Close' testID={LEFT_SIDE_MENU_PUSH_AND_CLOSE_BTN} onPress={pushAndClose} />
  47. <Button label='Close' testID={CLOSE_LEFT_SIDE_MENU_BTN} onPress={close} />
  48. </Root>
  49. );
  50. }
  51. module.exports = SideMenuLeftScreen;