[РЕДАКТИРОВАТЬ] БЫЛО ИСПРАВЛЕНО (прокрутите вниз)
Привет, я пытаюсь выбрать элемент реакции для функционального компонента, текущий код:
const Emoji = (props) => {
const copyButton = useRef(null);
function handleHover(e) {
console.log(this.copyButton); //want to select this element
}
function handleMouseOut(e) {
}
return(
<div className="wrapper">
<div id={"emoji-"+props.id} className="emoji" onMouseOver={handleHover} onMouseOut={handleMouseOut}>
<Button ref={copyButton} className="copyButton" buttonText="Copy" buttonColour="primary" />
<Button className="button" buttonText="Information" buttonColour=" " />
<h1>{props.emojiCharacter}</h1>
<p>{props.emojiName}</p>
</div>
</div>
);
}
export default Emoji;
Я пытаюсь создать приложение, в котором, когда пользователь наводит курсор на этот компонент, появляются кнопки, но когда я пытаюсь их выбрать, я продолжаю получать эту ошибку: TypeError: Cannot read property 'copyButton' of undefined
Он также возвращает null, когда я пытаюсь document.getElementById
.
Какие-либо предложения? Спасибо.
ФИКСИРОВАННЫЙ
Проблема заключалась в том, что элемент был настраиваемым компонентом, а не компонентом по умолчанию, иначе я мог бы просто использовать copyButton.current
Я исправил это, перейдя в jsx компонента и изменив объявление const Button = (props) => { etc }
на
const Button = React.forwardRef((props, ref) => (
<div ref={ref}
</div>
));
Эта статья сделала это https://reactjs.org/docs/forwarding-refs.html
this
. вы пробовали толькоconsole.log(copyButton);
? - person Nick   schedule 02.01.2021functional component
, поэтому вам не следует делатьthis.copyButton
, простоcopyButton
- person goto1   schedule 02.01.2021