大数字问题
🤨 什么是大数字
JS 能表示的最大安全数值区间是 -Math.pow(2, 53) + 1 ~ Math.pow(2, 53) - 1,超过这个区间的数字称为大数字。
🤨 问题描述
从文章列表,根据文章列表项的 ID 进入到文章详情的时候,有的时候会出现 404。
🤨 原因分析
后端返回的数据大部分是 JSON 格式的字符串,为了方便我们使用,axios 内部会对这个数据进行 JSON.parse 反序列化的操作;
而当这个 JSON 格式的字符串中包含大数字的时候,JSON.parse 是搞不定的,会出现转出来的结果和原来不一致的问题;
🤨 解决方案
和后端协商,返回的 ID 使用字符串的形式进行表示;
前端配置 axios 的 transformResponse 选项,手动使用一些第三方包对后端返回的数据进行处理,例如 json-bigint。