我正在尝试在我的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 ; } }
推荐阅读
如何解决《从Jekyll的集合中获取特定项目》经验,为你挑选了1个好方法。 ... [详细] 如何解决《宏未打开时自动运行》经验,为你挑选了1个好方法。 ... [详细] 如何解决《我如何验证RESTAPI调用是否正在使用Paw压缩响应?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《代码为5号码摘要》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么这个SBV代码在达到我设定的限制之前就停止了?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《无法访问Friend类的私有构造函数》经验,为你挑选了1个好方法。 ... [详细] 如何解决《SpotifyIframe打开新页面或打开应用程序而不是在同一站点中播放》经验,为你挑选了1个好方法。 ... [详细] 如何解决《故事板可以用作tvos的发布屏幕吗?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何在Xcode7中一次删除多个集成?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么[False]中的False==False返回True?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在Java8中做红宝石注入的优雅方式》经验,为你挑选了1个好方法。 ... [详细] 如何解决《片段-在运行方法之前等待onCreateView()完成》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何在使用scalaz时为布尔创建半群?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《ServiceFabric具有配置覆盖的多个服务实例》经验,为你挑选了1个好方法。 ... [详细] 如何解决《来自抽象类的unique_ptr的shared_ptr》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Facebook注销无法在Android上使用[FacebookSDK4]》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Postgres-将两列聚合成一个项目》经验,为你挑选了4个好方法。 ... [详细] 如何解决《在Python中用空格排序字符串列表》经验,为你挑选了1个好方法。 ... [详细] 如何解决《何时使用ScreenAdapter和何时使用Screen》经验,为你挑选了1个好方法。 ... [详细] 如何解决《NSDateFormatter无法在12小时制设置时返回英国地区的日期时间》经验,为你挑选了1个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1Django:模型之间的参考
- 2我应该在混合的Objective-C/Swift项目中使用Realm Objective-C或Realm Swift吗?
- 3运行gulp app时无法找到模块'require-dir'错误:serve rails
- 4如何使用sql语法(没有PHP)在mysql表中插入blob中的图像?
- 5错误:初始化程序只能在类型中声明
- 6删除邮递员缓存
- 7如何在Github上创建一个库,并通过Android Studio中的gradle依赖项使用它
- 8在KDB +希望之后你不做一个hclose会发生什么
- 9如何使用c#在折线图中显示标记点
- 10如何在YAML文件中为简单的POJO定义地图?
- 11如何通过命令行获取32位十六进制数字的随机字符串?
- 12获取rails中每个不同记录的所有列
- 13android:从片段打开chrome自定义选项卡
- 14使用Reactjs条带自定义表单
- 15如何获取最外面的父UIView容器?
- 16Node/Multer获取文件名
- 17Perl:Foreach循环
- 18使用jQuery/Javascript放置占位符
- 19为什么循环中的任务工厂打印超出循环索引?
- 20如何保护领域中的重复记录插入
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有