调用栈溢出问题 - (socket.emit / JSON.stringify)

开发环境:

  vue3、ts、socket

问题:

  在通过socket通信去告知后端需要更新数据时,报如下错

       

   数据类型: pinia中存储的树形数据

问题排查:

  刚开始以为是socket方面问题,后来发现,直接将后端返回数据传给后端没有问题

  遂将pinia中数据转换成非响应式对象,(自己递归处理)

  仍然报错调用栈溢出问题

  最终打算用JSON.stringify 解决转换非响应式对象数据,后报如下错

       

  这才发现还是传输数据 循环调用问题;

解决办法:

const cache = [];
const data = JSON.parse(JSON.stringify(treeData, (_, value: ComponentInfo) => { if(typeof value === 'object' && value !== null){ if(cache.indexOf(value) !== -1 || value.isSlot){ return; } cache.push(value); }; return value; }));

 

posted @ 2023-05-18 20:43  Mr_R  阅读(75)  评论(0编辑  收藏  举报