Hook

unlisted ⁨2⁩ ⁨files⁩ 2020-02-14 06:43:37 UTC

App.js

Raw
function App() {
    const [colorRef, color] = useColorChange();

    return (
        <div className="App">
            <header className="App-header">
            <deckgo-color ref={colorRef}></deckgo-color>

            <img src={logo} className="App-logo"
                 alt="logo" style={{background: color}}/>
            </header>
        </div>
    );
}

useColorChange.js

Raw
function useColorChange() {
    const [data, setData] = useState(undefined);
    const colorRef = useRef();

    useEffect(() => {
        const ref = colorRef.current;

        const colorListener = ($event) => {
            setData($event.detail.hex);
        };

        ref.addEventListener('colorChange', colorListener, false);

        return () => {
            ref.removeEventListener('colorChange', 
                                     colorListener, true);
        };
    }, [colorRef]);

    return [colorRef, data];
}