from Sameer Kumar
/
本文將介紹 useImperativeHandle 這個 hook,它可以讓我們攔截父元件傳遞的 ref,並回傳一組新的方法給該 ref。這個 hook 通常會搭配 forwardRef 一起使用,讓我們在自定義元件中取得 DOM reference,並且可以在父元件中使用子元件的函式。
💡 Learn more details about useImperativeHandle in Learn
useImperativeHandle In 10
Minutes.
When to use React.forwardRef
當我們想要在自定義元件中取得 DOM reference 時,我們會使用 forwardRef 來包裝該元件。在下面的範例中,我們將
<NinjaButton> 包裝在 forwardRef 中,並將 ref 指定給內部的 <button>。這樣一來,我們在使用 <NinjaButton> 時,就可以取得該元件內部的 <button> 的 reference。
When to use useImperativeHandle
我們可以在自定義元件中使用 useImperativeHandle 來攔截父元件傳遞的 ref,並回傳一組新的方法給該 ref。在下面的範例中,btnRef 從 NinjaButton 中的 useImperativeHandle 中接收到一組新的方法 (changeStyle)。這樣一來,我們就可以在父元件 (App) 中使用子元件 (NinjaButton) 的函式。
Summary
forwardRef 是一個高階元件,它可以讓我們在自定義元件中取得 DOM reference。useImperativeHandle 是一個 hook,它可以讓我們攔截父元件傳遞的 ref,並回傳一組新的方法給該 ref。這兩個元件可以搭配使用,讓我們在自定義元件中取得 DOM reference,並且可以在父元件中使用子元件的函式。