Skip to content

Instantly share code, notes, and snippets.

@thaycacac
Last active June 7, 2019 06:42
Show Gist options
  • Save thaycacac/b667e86f4017236aef533869f43216cb to your computer and use it in GitHub Desktop.
Save thaycacac/b667e86f4017236aef533869f43216cb to your computer and use it in GitHub Desktop.
Note React Hooks

Example useRef

import React, { forwardRef, useRef, useImperativeHandle } from 'react';

// We need to wrap component in `forwardRef` in order to gain
// access to the ref object that is assigned using the `ref` prop.
// This ref is passed as the second parameter to the function component.
const Child = forwardRef((props, ref) => {

  // The component instance will be extended
  // with whatever you return from the callback passed
  // as the second argument
  useImperativeHandle(ref, () => ({

    getAlert() {
      alert("getAlert from Child");
    }

  }));

  return <h1>Hi</h1>;
});

const Parent = () => {
  // In order to gain access to the child component instance,
  // you need to assign it to a `ref`, so we call `useRef()` to get one
  const childRef = useRef();

  return (
    <div>
      <Child ref={childRef} />
      <button onClick={() => childRef.current.getAlert()}>Click</button>
    </div>
  );
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment