Tôi đang cố gắng hiển thị canvas bằng React. Đồ họa bên trong khung cũng sẽ được xử lý bằng phương pháp Reacts render
.Hiển thị/Trả lại Canvas HTML5 trong ReactJS
Mã hiện tại không hiển thị canvas bằng đồ họa tôi muốn. Nhưng tôi đang tìm cách để trả lại canvas với đồ họa của tôi từ trong phương thức render
. Lý do tôi muốn điều này, là nguyên nhân tôi muốn điều này làm việc trong "React Way".
Lý tưởng nhất, tôi muốn mã của tôi là một cái gì đó như thế này:
return(
<div>
<canvas id='my_canvas_with_graphics_rendered_in_react'></canvas>
</div>
);
Trước tiên, tôi muốn biết nếu điều này thậm chí còn có thể. Hoặc nếu tôi nên tìm một giải pháp thay thế.
Có thể Im thiếu điểm phản ứng, nếu đúng như vậy, hãy cho tôi biết. Tôi hy vọng có một giải pháp, bởi vì từ những gì tôi đã đọc, React chào hàng chính nó như là V
trong MVC
. Đó là lý do tại sao, nếu có thể, đây sẽ là một giải pháp hoàn hảo cho những gì tôi đang cố gắng làm. Tôi sẽ không phải lo lắng về việc dựng hình bên trong khung hình của mình. Tôi chỉ đơn giản cung cấp dữ liệu cho thành phần và React sẽ trả lại các thay đổi.
Tôi đã đánh dấu trong tuyên bố return
nơi tôi tin rằng mã chính xác nên đi.
Các HTML
mã:
<div id='wrapper'>
<canvas id='canvas'></canvas>
</div>
Các jsx
mã:
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);
Hope tôi làm bản thân mình rõ ràng.
Câu hỏi đầu tiên: Có vấn đề gì nếu tôi gọi các thường trình vẽ đồ họa của tôi trong 'componentDidMount' hoặc' render'? – germ13
Câu hỏi thứ hai: Sẽ quản lý canvas từ bên trong React (tạo ra và tham chiếu) của nó có nhiều hơn để phản ứng cách làm việc không? Ý tưởng của tôi là làm cho thành phần này trở thành một phần lớn hơn của các thành phần React. – germ13
Câu hỏi đầu tiên: Có, nó quan trọng. 'render' có thể được gọi bất kỳ số lần nào trong suốt thời gian tồn tại của cá thể thành phần, trong khi' componentDidMount' sẽ chỉ được gọi một lần. Hãy chắc chắn để thực hiện 'componentWillUnmount' là tốt và làm sạch ở đó. –