uni-app 小程序循环多了一层$orig 导致无法取值
uni-app 小程序循环多了一层$orig 导致无法取值
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.01 |
| 手机系统 | iOS |
| 手机系统版本 | iOS 17 |
| 手机厂商 | 苹果 |
| 手机机型 | piphone13 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
<view>{{ item.user.nickname }}
<view class="name-tips" v-if="item.user.officialLogo.length > 0">
<image lazy-load :src="icon.Logo_official" alt="" class="logo_faxian_img"></image>
{{ item.user.officialLogo[0] || '' }}
</view>
<view v-if="item.user.tag === 1" class="logo_faxian">
<image lazy-load :src="icon.logo_faxian" alt="" class="logo_faxian_img"></image>
</view>
预期结果:
正常取值
实际结果:
多一层$orig 对象导致无法取值
bug描述:
使用cli构建项目,原来运行正常,最近重新安装了配置项,就报这个错
更多关于uni-app 小程序循环多了一层$orig 导致无法取值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
下面贴代码了
代码打印,多一层结构

data1打印,里面是没有这个是嘛
hbuilderx版本呢
回复 蔡cai: 数据里面没有这个 我用的是cli构建的uniapp项目
回复 4***@qq.com: 你可以创建一个新的页面,弄个简单数据看会不会出现这种情况
回复 4***@qq.com: 那排查下依赖咯
回复 蔡cai: 嗯 我在看依赖
最后咋解决的,我也遇到了一样的问题
解决了么,同样的问题
哥们,解决了吗?我也出现了
在 uni-app 小程序开发中,如果你在循环数据时发现多了一层 $orig,这通常是因为你使用了某些状态管理库(如 vuex)或数据绑定工具,导致数据被包装了一层。
问题原因
$orig 通常是某些数据绑定工具(如 vuex 的 mapState)在处理数据时自动添加的,用于标识原始数据。如果你直接使用 $orig,可能会导致无法正确取值。
解决方法
-
直接使用原始数据 如果你确定数据已经被正确处理,可以直接使用原始数据,而不是通过
$orig来访问。<template> <view v-for="item in list" :key="item.id"> {{ item.name }} </view> </template> <script> export default { data() { return { list: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, ], }; }, }; </script> -
使用计算属性 如果数据来自
vuex或其他状态管理库,可以使用计算属性来获取原始数据。<template> <view v-for="item in normalizedList" :key="item.id"> {{ item.name }} </view> </template> <script> import { mapState } from 'vuex'; export default { computed: { ...mapState(['list']), normalizedList() { return this.list.$orig || this.list; }, }, }; </script> -
使用
JSON.parse和JSON.stringify如果数据被包装了一层$orig,你可以使用JSON.parse和JSON.stringify来去掉这一层。<template> <view v-for="item in parsedList" :key="item.id"> {{ item.name }} </view> </template> <script> export default { data() { return { list: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, ].$orig, // 假设数据被包装了一层 $orig }; }, computed: { parsedList() { return JSON.parse(JSON.stringify(this.list)); }, }, }; </script>


