问题

项目需要实现两点之间连线的功能,起初我在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 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注