react-native-navigation的迁移库

ComponentRegistry.ts 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { ComponentProvider } from 'react-native';
  2. import { Store } from './Store';
  3. import { ComponentEventsObserver } from '../events/ComponentEventsObserver';
  4. import { ComponentWrapper } from './ComponentWrapper';
  5. import { AppRegistryService } from '../adapters/AppRegistryService';
  6. export class ComponentRegistry {
  7. constructor(
  8. private store: Store,
  9. private componentEventsObserver: ComponentEventsObserver,
  10. private componentWrapper: ComponentWrapper,
  11. private appRegistryService: AppRegistryService
  12. ) {}
  13. registerComponent(
  14. componentName: string | number,
  15. componentProvider: ComponentProvider,
  16. concreteComponentProvider?: ComponentProvider,
  17. ReduxProvider?: any,
  18. reduxStore?: any
  19. ): ComponentProvider {
  20. const NavigationComponent = () => {
  21. return this.componentWrapper.wrap(
  22. componentName.toString(),
  23. componentProvider,
  24. this.store,
  25. this.componentEventsObserver,
  26. concreteComponentProvider,
  27. ReduxProvider,
  28. reduxStore
  29. );
  30. };
  31. this.store.setComponentClassForName(componentName.toString(), NavigationComponent);
  32. this.appRegistryService.registerComponent(componentName.toString(), NavigationComponent);
  33. return NavigationComponent;
  34. }
  35. }