React forwardRef:refおよびその他の小道具

Sep 21 2020

親コンポーネント:

const Parent = (props) => {
  const ref = useRef();

  return <Child ref={ref} />
}

と子供:

const Child = forwardRef((props, ref) => {
  return <button ref={ref} ...>click</button>
})

Childただより多くの小道具を渡したい場合はどうなりrefますか?

ドキュメントとチュートリアルを検索しましたが、何も見つかりませんでした。そして試行錯誤によって、私はこれがうまくいくと思います:

// in parent
<Child onClick={...} prop1={...} prop2={...} ref={ref} />

その後、でChild、私は(これらの小道具を得ることができonClick、prop1、prop2から)props。

私がする必要があるのはそれだけですか?ref子供に渡す最後の小道具として置くことによって?

Child必要なボタンが複数ある場合はどうなりますrefか?

回答

PeterKeuter Sep 21 2020 at 20:11
// in parent
<Child onClick={...} prop1={...} prop2={...} ref={ref} />

順序は関係ありません。forwardRefプロパティからrefpropを抽出し、ラッパーを作成します。

他の小道具はprops(forwardRefコールバック関数の最初の引数)で利用できます

複数の参照を使用する場合は、ここの例を使用できます。

aeXuser264 Sep 21 2020 at 20:12

まあ、私はこのアプローチに従っていました、

親コンポーネント

const Parent = (props) => {
  const ref = useRef();

  return <Child _ref={ref} />
}

子コンポーネント

const Child = forwardRef(({ _ref, prop1, prop2, prop3, ...props }) => {
  return <button ref={_ref} ...>click</button>
})

そしてそれはうまくいった