问题
项目需要实现两点之间连线的功能,起初我在redux中存储了点击两node的id值,但后续又拓展出可以是node上连接桩port的连线,而连线又要有语义判断,同样port基于node,添加port时也需要获取node信息。
虽然可以通过node的id获取到node元素信息,但antv x6数据结构的设计为对于Edge和Node都继承Cell类,它们都可以通过getCellById
获取,但我们需要调用getData
方法获取节点上本就有的数据,但getData
方法并不是父类方法,而是Node
中定义的方法,所以不得不考虑在redux中存储node实例(否则要通过遍历画布所有节点的方法才能找到对应node)
这时控制台会报错A non-serializable value was detected in an action,...
不可序列化通常指的是无法被转换成字符串形式的数据类型或值,一些常见的不可序列化的数据类型或值有:函数、循环引用、不可枚举属性、原型链和Symbol类型等
解决
修改配置文件
const store = configureStore({
//...
middleware: getDefaultMiddleWare =>
getDefaultMiddleWare({
serializableCheck: false,
}),
});
0 条评论