Dashboard sipadu mbip
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Manager.js.flow 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // @flow
  2. import * as React from 'react';
  3. import createContext, { type Context } from 'create-react-context';
  4. export const ManagerReferenceNodeContext: Context<?HTMLElement> = createContext();
  5. export const ManagerReferenceNodeSetterContext: Context<
  6. void | ((?HTMLElement) => void)
  7. > = createContext();
  8. export type ManagerProps = {
  9. children: React.Node,
  10. };
  11. export default class Manager extends React.Component<ManagerProps> {
  12. referenceNode: ?HTMLElement;
  13. setReferenceNode = (newReferenceNode: ?HTMLElement) => {
  14. if (newReferenceNode && this.referenceNode !== newReferenceNode) {
  15. this.referenceNode = newReferenceNode;
  16. this.forceUpdate();
  17. }
  18. };
  19. componentWillUnmount() {
  20. this.referenceNode = null;
  21. }
  22. render() {
  23. return (
  24. <ManagerReferenceNodeContext.Provider value={this.referenceNode}>
  25. <ManagerReferenceNodeSetterContext.Provider
  26. value={this.setReferenceNode}
  27. >
  28. {this.props.children}
  29. </ManagerReferenceNodeSetterContext.Provider>
  30. </ManagerReferenceNodeContext.Provider>
  31. );
  32. }
  33. }