调用栈溢出问题 - (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; }));