Есть объяснение по этому поводу?
Проблема, которую вы видите, связана с тем, что key
и ref
являются специальными опорами. См.
Большинство реквизитов в элементе JSX передаются компоненту, однако есть два специальных реквизита (ref и key), которые используются в React, и поэтомуне пересылается компоненту.
Например, попытка доступа к this.props.key из компонента (т. е. функции рендеринга или propTypes) не определена.Если вам нужно получить доступ к одному и тому же значению в дочернем компоненте, вы должны передать его как другой объект (например: <ListItemWrapper key={result.id}
id={result.id} />
).Хотя это может показаться излишним, важно отделить логику приложения от согласования подсказок.
Чтобы получить доступ к ref в child, передайте его в другой реквизит.Скажем, вы создаете ref
как
const ref = React.createRef();
и затем передаете его своему компоненту, как показано ниже:
<FancyButton forwardedRef={ref} text="Click ME!" />
, где внутри FancyButton
ссылка будет доступна как
<button
onClick={() => {
this.logRef(forwardedRef);
}}
ref={forwardedRef}
>
{text}
</button>
, где logRef
определяется как
logRef(myref) {
console.log(myref.current);
}
, рабочий пример можно увидеть по адресу (Нажмите на кнопку и проверьте консоль): https://codesandbox.io/s/ko6wnrorv