【React+TypeScript】示例:React Hooks useImperativeHandle

React+TypeScript.png

在TypeScript中使用useImperativeHandle的示例。

在调用子组件中定义的方法时,可以使用父组件。

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

// 公開したいメソッドの定義
interface Handler {
  setFocus(): void;
}

// 公開したいメソッドを持つコンポーネントの定義
// プロパティを追加する場合は、forwardRef<Handler, Props>と定義する。
const FancyInput = forwardRef<Handler>((props, ref) => {
  const inputRef = useRef({} as HTMLInputElement);

  useImperativeHandle(ref, () => {
    return {
      setFocus() {
        inputRef.current.focus();
      }
    };
  });

  return <input ref={inputRef} type="text" />;
});

// コンポーネントの使い方
const App = () => {
  const ref = useRef({} as Handler);
  return (
    <>
      <FancyInput ref={ref} />
      <button
        onClick={() => {
          ref.current.setFocus();
        }}
      >
        click
      </button>
    </>
  );
};
广告
将在 10 秒后关闭
bannerAds