[英]How do I reference an element that is to be returned by a React component?
我想首先告訴你,我是 React 的新手,我的背景幾乎完全使用 vanilla JS 和 HTML。 我想知道如何在函數中將元素作為參數引用/傳遞,類似於您在 JS 中的處理方式:
const myElement = document.getElementById("my-element");
或者
const myElement = document.createElement("div");
function testFunc(element) {
return element.getBoundingClientRect();
}
testFunc(myElement);
我用谷歌搜索了一下,但沒有找到任何好的答案,我能找到的只是關於“ref”,但我相信有一個更簡單的解決方案。
這就是我現在在 React 中的內容:
import React from "react";
import "./myComp.css";
function myComp(props) {
const sliderContainer = (
<div className="slider-container" style={props.styles}></div>
);
function myFunc(element) {
return element.getBoundingClientRect();
}
const elementDimensions = myFunc(sliderContainer);
return { sliderContainer };
}
export default myComp;
但我想做的是:
import React from "react";
import "./myComp.css";
function myComp(props) {
const sliderContainer = "slider-container" //SOME SORT OF REFRENCE / SELECTOR, I'VE FIGURED OUT THAT querySelectors IS NOT THE RIGHT APPORACH
function myFunc(element) {
return element.getBoundingClientRect();
}
const elementDimensions = myFunc(sliderContainer);
return (
<div className="slider-container" style={props.styles}>
<div className="myChild"></div>
</div>
);
}
export default myComp;
您可以使用document.getElementById('slider-container');
或 React 中document
任何其他用途。
這應該有效:
const sliderContainer = useRef(null);
function myFunc(element) {
return element.getBoundingClientRect();
}
useEffect(() => {
const elementDimensions = myFunc(sliderContainer.current);
});
return (
<div ref={sliderContainer} className="slider-container" style={props.styles}>
<div className="myChild"></div>
</div>
);
一旦組件被掛載, ref
屬性就會將元素分配給sliderContainer.current
。
請注意,該值最初設置為 null: useRef(null)
。
您必須等到該元素不為 null 后才能訪問它,因為在最初呈現組件時該元素尚未安裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.