我正在尝试在我的React + Flux项目中包含一个JointJS图.我从那里现有的演示开始.
我的想法是将图表嵌入一个更高级别的组件中,该组件将在我的项目中重用.
我想出的结构如下:
index.html ... ...
app.js ... ReactDOM.render(, document.getElementById('mySec') );
JointJSDiagram.react.js ... var JointJSDiagramStore = require('../stores/JointJSDiagramStore'); class JointJSDiagram extends React.Component { ... componentDidMount() { var el = this.refs[this.props.placeHolder]; document.addEventListener("DOMContentLoaded", function(elt){ return function(){JointJSDiagramStore.buildDiagram(elt)}; }(el), false); } ... render() { return (); } ... } module.exports = JointJSDiagram;
JointJSDiagramStore.js ... var AppDispatcher = require('../dispatcher/AppDispatcher'); var EventEmitter = require('events').EventEmitter; var assign = require('object-assign'); var _graph = new joint.dia.Graph(); var _paper = new joint.dia.Paper({ width: 600, height: 200, model: _graph, gridSize: 1 }); var JointJSDiagramStore = assign({}, EventEmitter.prototype, { ... buildDiagram: function(el) { _paper.el = el; // In here I used the code from: http://www.jointjs.com/demos/fsa function state(x, y, label) { var cell = new joint.shapes.fsa.State({ position: { x: x, y: y }, size: { width: 60, height: 60 }, attrs: { ... ... ... link(star, block, 'other', [{x: 650, y: 290}]); link(star, code, '/', [{x: 490, y: 310}]); link(line, line, 'other', [{x: 115,y: 100}, {x: 250, y: 50}]); link(block, block, 'other', [{x: 485,y: 140}, {x: 620, y: 90}]); link(code, code, 'other', [{x: 180,y: 500}, {x: 305, y: 450}]); }, ... }); ... module.exports = JointJSDiagramStore;问题是没有任何可视化,除了一些(7)警告说明:
警告:ReactDOMComponent:不访问DOM节点的.getDOMNode(); 相反,直接使用节点.这个DOM节点由渲染
JointJSDiagram
.UPDATE
如果我明确使用id而不是像这样的refs:
JointJSDiagramStore.js ... componentDidMount() { var el = document.getElementById(this.props.placeHolder); document.addEventListener("DOMContentLoaded", function(elt){ return function(){JointJSDiagramStore.buildDiagram(elt)}; }(el), false); JointJSDiagramStore.addChangeListener(this._onChange); } ... render() { return (); } ...我不再收到警告,但占位符div上仍然没有显示任何内容.
1> 小智..:这个快速测试对我有用.我正在使用反应0.14.3
class Graph extends React.Component { constructor(props) { super(props); this.graph = new joint.dia.Graph(); } componentDidMount() { this.paper = new joint.dia.Paper({ el: ReactDOM.findDOMNode(this.refs.placeholder), width: 600, height: 200, model: this.graph, gridSize: 1 }); const rect = new joint.shapes.basic.Rect({ position: { x: 100, y: 30 }, size: { width: 100, height: 30 }, attrs: { rect: { fill: 'blue' }, text: { text: 'my box', fill: 'white' } } }); const rect2 = rect.clone(); rect2.translate(300); const link = new joint.dia.Link({ source: { id: rect.id }, target: { id: rect2.id } }); this.graph.addCells([rect, rect2, link]); } render() { return ; } }
推荐阅读
如何解决《如何阅读此C++语句》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用FormData和multer上传文件》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Guava是否提供了一种解除字符串的方法?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在列表和数组中按索引获取struct项》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何清除TextBox以使默认的Undo方法仍然起作用?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《jQuery自动完成悬停样式》经验,为你挑选了3个好方法。 ... [详细] 如何解决《如何将相机聚焦在WindowsUniversalApps中?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Javascript中的2D数组》经验,为你挑选了1个好方法。 ... [详细] 如何解决《EC2实例可以拒绝自动终止吗?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《ServerSocket无法从客户端读取输入》经验,为你挑选了1个好方法。 ... [详细] 如何解决《添加一个int变量时生成不同的IL》经验,为你挑选了2个好方法。 ... [详细] 如何解决《IE11浏览器中的<inputtype="file">定位问题》经验,为你挑选了0个好方法。 ... [详细] 如何解决《百胜尝试在CentOS6上安装.el7版本》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用C#中的32feet.net库从Windows发送bMessage到消息访问服务器》经验,为你挑选了0个好方法。 ... [详细] 如何解决《为什么定义常量表达式的规则必须如此混乱?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《单击按钮时如何更改背景颜色》经验,为你挑选了1个好方法。 ... [详细] 如何解决《确定我们是否在IPython笔记本会话中》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用contenteditablediv获取并设置光标位置》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将任意类的列转换为另一个data.table中的匹配列的类》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何避免Flask-Admin2.1警告"UserWarning:规则集中缺少字段"?》经验,为你挑选了1个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1mysql在group_concat中的计数项目
- 2如何检查Google API下的设备是否启用了位置服务
- 3在提交表单之前,根据下拉列表的值更改动态填充表单字段
- 4尝试呈现其视图不在窗口层次结构中的UIViewController
- 5Cmake不会工作 - 没有当前的工作目录
- 6变量顺序对sscanf有影响吗?
- 7Arduino Yun vs tessel vs espruino
- 8在悬停时旋转字体真棒图标
- 9在VBScript中调用exe
- 10无法在沙箱环境中加载iframe
- 11insmod错误:插入'./hello.ko': - 无效的模块格式"
- 12django conn_max_age和uwsgi
- 13将float(1.2)拆分为舍入数(1)和十进制(2)
- 14AJAX提交和500服务器错误
- 15wxPython:如何一键清除TextCtrl中的默认文本
- 16R中的qplot中不存在'method'参数?
- 17我在哪里可以找到svn错误代码的详尽列表
- 18推动Heroku失败 - 没有这样的应用致命
- 19如何查看Swift文件的公共API"标题"?
- 20在Retrofit中一起使用@Field和@Body参数
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有