The issue has been closed
问题描述
activate-relations配置如下
{
type: 'activate-relations',
trigger: 'click',
resetSelected: true,
},
页面通过某些操作会让画布里所有节点拥有状态nodeStatus:1、nodeStatus:2
这时候点击某节点,然后点击画布空白处,所有节点都会变为默认状态
重现链接
www.test.com
重现步骤
1.让所有节点拥有自定义状态nodeStatus:1或nodeStatus:2
2.点击其中某节点
3.点击画布空白处
4.所有节点恢复默认状态
预期行为
1.让所有节点拥有自定义状态nodeStatus:1或nodeStatus:2
2.点击其中某节点
3.点击画布空白处
4.节点恢复之前的nodeStatus:1或nodeStatus:2
平台
- 操作系统: [macOS, Windows, Linux, React Native ...]
- 网页浏览器: [Google Chrome, Safari, Firefox]
- G6 版本: [4.5.1 ... ]
屏幕截图或视频(可选)
No response
补充说明(可选)
No response

Hi @XiaoRIGE, Please star this repo if you find it useful! Thanks :star:!
你好 @XiaoRIGE。如果该仓库对你有用,可以 star 一下,感谢你的 :star:!
posted by github-actions[bot] over 1 year ago
posted by Yanyan-Wang over 1 year ago 
posted by XiaoRIGE over 1 year ago 
posted by Yanyan-Wang over 1 year ago 
相关代码是activate-relations中的throttleClearActiveState函数内吗?
posted by XiaoRIGE over 1 year ago
throttleClearActiveState: throttle(function (e, self) {
var graph = self.get('graph');
if (!graph || graph.destroyed) return;
if (!self.shouldUpdate(e.item, {
event: e,
action: 'deactivate'
}, self)) return;
var activeState = self.activeState;
var inactiveState = self.inactiveState;
var activeItems = self.activeItems || {};
var inactiveItems = self.inactiveItems || {};
Object.values(activeItems).filter(function (item) {
return !item.destroyed;
}).forEach(function (item) {
graph.clearItemStates(item, activeState);
});
Object.values(inactiveItems).filter(function (item) {
return !item.destroyed;
}).forEach(function (item) {
graph.clearItemStates(item, inactiveState);
});
self.activeItems = {};
self.inactiveItems = {};
graph.emit('afteractivaterelations', {
item: e.item || self.get('item'),
action: 'deactivate'
});
}, 50, {
trailing: true,
leading: true
})
有个疑惑,我发现代码里边只会清除节点的activeState和inactiveState,并没有清除自定义状态啊
posted by XiaoRIGE over 1 year ago
activeState 和 inactiveState 是变量,存储的是用户对这个交互配置的状态名
posted by Yanyan-Wang over 1 year ago
我发现是因为点击画布空白处的时候,节点的inactive会变为false,我的自定义节点在inactive值为false会将节点的透明度改为1,但是这个节点同时还拥有状态nodeStatus:1,它对应的样式是让节点透明度为0.4,我该如何再自定义节点的setState定义该优先级的处理呢?
posted by XiaoRIGE over 1 year ago
已解决,只需在setState中对应设置透明度的地方加上判断该节点是否已经包含优先级更高的某状态
posted by XiaoRIGE over 1 year ago