Guest User

Untitled

a guest
Aug 20th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. import React from 'react';
  2. import debounce from 'lodash/debounce';
  3.  
  4. /**
  5. * Usage example:
  6. * export default rerenderOnResize()(Header);
  7. */
  8. export default () => (WrappedComponent) => {
  9. class ReRenderOnResize extends React.PureComponent {
  10. componentDidMount() {
  11. this.callback = debounce(this.rerender, 100);
  12. window.addEventListener('resize', this.callback);
  13. }
  14.  
  15. componentWillUnmount() {
  16. window.removeEventListener('resize', this.callback);
  17. }
  18.  
  19. rerender = () => {
  20. this.forceUpdate();
  21. };
  22.  
  23. render() {
  24. const props = { ...this.props };
  25. return <WrappedComponent {...props} />;
  26. }
  27. }
  28.  
  29. return ReRenderOnResize;
  30. };
Add Comment
Please, Sign In to add comment