子コンポーネントの適当なものと紐付いた参照を親コンポーネントから覗きたい場合に使います。React.forwardRef
でラップするコンポーネントはprops
の他にref
を2つ目の引数に受け取ります。この中身は親コンポーネントのどこかで生成された参照です。
以下は1秒後にチェックボックスをチェックする例です。
const Child = React.forwardRef((_, ref) => {
return ;
});
const App = () => {
const ref = React.useRef(null);
React.useEffect(() => {
setTimeout(() => {
ref.current.checked = true;
}, 1000);
}, []);
return ;
}
Child
に対してReact.forwardRef
を使ってます。そして渡されたref
をinput[type=checkbox]
に渡すことでこの要素を親から直接触れるようにしてます。
App
では描画が完了後にそのref
を通してinput[type=checkbox]
のchecked
を真にすることでチェック済の状態に DOM を更新してます。