#javascript #reactjs #svg #next.js
#javascript #reactjs #svg #next.js
Вопрос:
Я импортирую файл SVG в качестве компонента и пытаюсь получить его измерение, но он возвращает null. Может кто-нибудь дать мне совет для достижения этой цели.
PS. getBBox() не работает, выдает ошибку.
Пример кода:
import IconSVG from 'public/images/my-svg.svg';
const MyComponent = () => {
const myRef = React.useRef(null);
React.useEffect(() => {
console.log(myRef.current);
}, []);
return (
<div>
<IconSVG ref={myRef} />
</div>
);
};
Комментарии:
1. В зависимости от формата вашего svg вы можете получить
viewBox
атрибут, иногда svgwidth
height
также имеет атрибуты and .
Ответ №1:
Вместо этого вы должны использовать useCallback()
:
const MyComponent = () => {
const myRef = React.useCallback(node => {
if (node !== null) {
console.log(node.current.getBoundingClientRect()); // get dimensions
}
}, []);
return (
<div>
<IconSVG ref={myRef} />
</div>
);
};
Комментарии:
1. Спасибо! До сих пор я не знал об обратных вызовах ref
2. Рад, что это помогло.