reactjs - 如何限制 React-Diagram 节点允许的链接数量
问题描述
在我的图中,我有一个矩形节点。一个矩形有顶部和底部端口。我想限制节点之间的链接如下。
预期:
就像链表一样,节点顶部和底部端口每个只能有一个链接。
node 1 -> bottom port
已经连接到,node 2 -> top port
因此不应允许从node 1 -> bottom port
+----------+
+ node 1 +
+----+-----+
|
|
+----+-----+
+ node 2 +
+----+-----+
|
|
+----+-----+
+ node 3 +
+----+-----+
不允许出现以下情况:
+----------+
+ node 1 +
+----+-----+
|
+------------------+
| |
+----+-----+ +----+-----+
+ node 2 + + node 3 +
+----+-----+ +----+-----+
我尝试注册以下侦听器,但在链接两个节点时它们都没有被触发。
engine.getModel().getActiveNodeLayer().registerListener({
entityRemoved: (event: any) => {
console.log('node::entityRemoved', event);
},
eventDidFire: (event: any) => {
console.log('node::eventDidFire', event);
},
eventWillFire: (event: any) => {
console.log('node::eventWillFire', event);
}
});
解决方案
对于 googlers,我通过创建自定义端口模型解决了这个问题:
class ConstrainedPortModel extends DefaultPortModel {
constructor(options: ConstrainedPortModelOptions) {
super(options);
// save important options here
}
canLinkToPort(port: PortModel): boolean {
if (/* Something not allowed */) {
return false;
}
return super.canLinkToPort(port);
}
}
然后在我的模型的构造函数中添加我的自定义端口:
class MyCustomNodeModel extends NodeModel {
constructor(options: MyCustomNodeModelOptions) {
super({
...options,
});
this.addPort(new ConstrainedPortModel({
in: true,
// Other important constraint options here
}));
}
推荐阅读
- elixir - Phoenix单元测试如何检查连接对象是否被重定向到特定路径?
- html - 将 div 对齐到容器的底部
- c# - 在 C# 中读取浏览器证书
- html - 当标题属性中断时,有没有办法让 DataTables 进行排序?
- python-3.x - 使用python解压缩gz格式的nifti医学图像
- c++ - 合并排序:分割错误核心转储
- apache-kafka - Kafka Connect 源连接器的任务频繁上下(RUNNING 或丢失)
- c - 从二进制文件读取到结构的动态数组
- axios - Redux-Saga 响应未定义
- django - Django,无法在前端下载 mp3 文件