Skip to content

Instantly share code, notes, and snippets.

@yingjieg
Last active July 16, 2019 07:40
Show Gist options
  • Select an option

  • Save yingjieg/180fb2997e592508fa087f0ea3ba28d5 to your computer and use it in GitHub Desktop.

Select an option

Save yingjieg/180fb2997e592508fa087f0ea3ba28d5 to your computer and use it in GitHub Desktop.
React
export default function higherOrderComponent(WrappedComponent) {
return class EnhancedComponent extends Component {
render() {
return <WrappedComponent {...this.props} {...this.state} />;
}
};
}
const EnhancedComponent = higherOrderComponent(<DummyComponent />);
import { useState, useEffect } from 'react';
export function useMouseLocation() {
const [mouseX, setMouseX] = useState(25);
const [mouseY, setMouseY] = useState(25);
function handler(event) {
const { clientX, clientY } = event;
setMouseX(clientX);
setMouseY(clientY);
}
useEffect(() => {
window.addEventListener('mousemove', handler);
return () => {
window.removeEventListener('mousemove', handler);
};
});
return [mouseX, mouseY];
}
import React from 'react';
import { useMouseLocation } from 'mouse-location-hook';
export default function MouseTracker() {
const [mouseX, mouseY] = useMouseLocation();
return (
<div>
mouseX: {mouseX}, mouseY: {mouseY}
</div>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment