Próbuję renderować płótno za pomocą przycisku React. Grafika wewnątrz płótna może być również obsługiwana za pomocą metody Reakcje render
.Renderowanie/zwracanie Canvas HTML5 w ReactJS
Obecny kod renderuje płótno z potrzebną grafiką. Ale szukam sposobu, aby zwrócił płótno z moją grafiką z metody render
. Powodem, dla którego tego chcę, jest to, że chcę, żeby to działało w "React Way".
Idealnie chciałbym mój kod będzie coś takiego:
return(
<div>
<canvas id='my_canvas_with_graphics_rendered_in_react'></canvas>
</div>
);
Po pierwsze, chcę wiedzieć, czy jest to w ogóle możliwe. Lub gdybym szukał alternatywy.
Może Im brakuje punktu React, jeśli tak jest, proszę dać mi znać. Mam nadzieję, że istnieje rozwiązanie, ponieważ z tego, co przeczytałem, React nazywa się V
w MVC
. Dlatego, jeśli to możliwe, byłoby to idealne rozwiązanie dla tego, co próbuję zrobić. Nie musiałbym się martwić o renderowanie w moim płótnie. Po prostu dostarczyłbym dane do komponentu, a React ponownie renderowałby zmiany.
Mam oznaczone w oświadczeniu return
, gdzie uważam, poprawny kod powinien iść.
Kod HTML
:
<div id='wrapper'>
<canvas id='canvas'></canvas>
</div>
Kod jsx
:
var MyCanvas = React.createClass({
render:function(){
var line = this.props.lines;
var ctx = this.props.canvas.getContext("2d");
ctx.strokeStyle = 'rgba(0,0,0,0.5)';
ctx.beginPath();
ctx.moveTo(line[0].x0, line[0].y0);
// .... more code .....
ctx.stroke();
return(
<div>
/* *********************************
??? RETURN MY RENDERED CANVAS
WITH GRAPHIC LINES. ????
This is where I want to return the canvas
********************************* */
</div>
);
}
});
var wrapper = document.getElementById('wrapper');
var canvas = document.getElementById('canvas');
var line1 = { x0: 0, y0: 10, x1: 20, y1: 30 };
var line2 = { x0: 40, y0: 50, x1: 60, y1: 70 };
var myCanvas = <MyCanvas canvas={ canvas } lines={ [line1, line2] } />;
React.render(myCanvas, wrapper);
nadzieję, że wyraziłem się jasno.
Pierwsze pytanie: czy to ma znaczenie, jeśli wzywam moje procedury rysowania grafiki w 'componentDidMount' lub' render'? – germ13
Drugie pytanie: Czy zarządzanie płótnem z wnętrza React (jego tworzenie i tworzenie odniesień) byłoby bardziej React sposobem robienia rzeczy? Moim pomysłem jest uczynienie tego komponentu częścią większego zestawu komponentów React. – germ13
Pierwsze pytanie: Tak, to ma znaczenie. 'render' może być wywołany dowolną liczbę razy podczas trwania instancji składnika, natomiast' componentDidMount' będzie wywoływane tylko raz. Pamiętaj, aby zaimplementować również 'componentWillUnmount' i tam przeprowadzić czyszczenie. –