#konvajs #react-konva #konva #konvajs-reactjs
#конвайс #react-konva #конвайс #конвайс-reactjs
Вопрос:
Я хочу создать эквивалент этого (код sudo):
<div padding="4px">
<p>My Text</p>
</div>
С элементами React Konva. Я знаю, как начать, используя Group
, Rect
, и Text
, но я не могу понять, как сделать дополнение. Надеюсь, кто-нибудь сможет помочь! Спасибо!!
РЕДАКТИРОВАТЬ: это то, что я пытаюсь создать (зеленый фон с отступом 2px вокруг текста).
Ответ №1:
У вас есть свойство заполнения для формы текста, чтобы использовать его.
Чтобы обернуть прямоугольник вокруг текстовой фигуры, вы должны рассчитать размер текста.
const App = () => {
const textRef = React.useRef();
const [size, setSize] = React.useState({ x: 0, y: 0 });
React.useEffect(() => {
setSize({
width: textRef.current.width(),
height: textRef.current.height()
});
}, []);
return (
<Stage width={window.innerWidth} height={window.innerHeight}>
<Layer>
<Group x={20} y={50}>
<Rect
width={size.width}
height={size.height}
fill="red"
shadowBlur={10}
/>
<Text
text="Some text on canvas"
ref={textRef}
fontSize={15}
padding={10}
/>
</Group>
</Layer>
</Stage>
);
};
https://codesandbox.io/s/react-konva-text-with-padding-yh876
Комментарии:
1. Привет, спасибо за ответ! Возможно, я неправильно понимаю, но я ищу, чтобы красный
Rect
цвет (в вашей демонстрации) соответствовал размеруText
, а отступы увеличивали его. Имеет ли это смысл? Я ДЕЙСТВИТЕЛЬНО ценю вашу помощь. Вы с Konva спасаете меня прямо сейчас, ха-ха!