javascript - 在 ReactJS 中每次重新渲染时获取一个新的 FabricJS-Canvas

标签 javascript html reactjs canvas fabricjs

我有以下代码,其中我通过 Prop 获得了名称列表。 对于每个元素,我都创建一个 Fabric.IText。

问题:我的页面就像一个待办事项列表。因此,当我添加待办事项时,FabricCanvas 组件正在重新渲染。每次发生这种情况时,我都会在旧 Canvas 上添加新 Canvas 。

我尝试在componentDidMount和componentWillMount中初始化fabric.Canvas,但这两个版本都不起作用。

我正在使用选项卡,因此当我更改选项卡然后再改回来时,我会再次获得一个新的 Canvas 。

-->

import React from 'react';
import fabric from 'fabric';

var canvas;

var FabricCanvas = React.createClass({
 getInitialState: function(){
 return{
  elements: this.props.elements
 };
},

initiateWidgets: function(){
 canvas = new fabric.Canvas("FabCan");

for (var key in this.state.elements){
  var temp = new fabric.IText(this.state.elements[key]);
  canvas.add(temp);
},

render: function(){
 this.initiateWidgets();
  return(
    <canvas id="FabCan"> </canvas>
  );
 }
});

module.exports = FabricCanvas;

最佳答案

您可以使用componentWillReceiveProps

componentWillReceiveProps(newProps){
    do something with newProps
}

关于javascript - 在 ReactJS 中每次重新渲染时获取一个新的 FabricJS-Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290052/

相关文章:

javascript - $(document).ready 中的元素在某种情况下未定义

javascript - 我可以使用Java音频通过ALAudioDevice(setClientPreferences,然后进行订阅)从Pepper的麦克风流式传输音频吗?

javascript - 当 html 文档高度不够时,菜单固定在滚动顶部的问题?

html - 使表格与标题在同一行开始

javascript - 了解 ReactJS 中的 this.method.bind(null,...)?

reactjs - 变换上的布局动画

javascript - 模板文字 HTML TABLE 中的三元运算符

jquery - 无法将输入字段值复制到另一个字段?

javascript - 使用 React.js 获取解析错误

javascript - 当窗口失去焦点时 setTimeout 会发生什么?