1***@qq.com
1***@qq.com
  • 发布:2020-04-21 18:37
  • 更新:2020-05-30 01:52
  • 阅读:1713

HBuilder X更新后拓展组件uni-ui不可用,反向传值setData报错

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

HBuilder X 更新到 2.6.11.20200409 版本,出现两个问题:

1。拓展组件uni-ui都不可用了,报如下错误:

工程路径/node_modules/@dcloudio/uni-ui/lib/uni-drawer/uni-drawer.vue:[-1,15]$r[0][i] is undefined
工程路径/node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue:[-1,41]$r[0][sc] is undefined

  1. 反向页面传值,setData方法报错,有人遇到同样的问题:getCurrentPages()方法返回的pages数组中元素的setData无法调用,例“'prevPage.setData' is undefined”
let pages = getCurrentPages();  
let prevPage = pages[pages.length - 2];  
prevPage.setData({  
    dataDict: e.detail.value,  
    isChanged: this.isChanged,  
    changedIndex: this.changedIndex  
});

结果报错:
SyntaxError: JSON Parse error: Unexpected EOF ERROR
18:28:39.622 TypeError: undefined is not an object (evaluating 'currPage.data.dataDict')
ERROR
18:28:46.621 TypeError: prevPage.setData is not a function. (In 'prevPage.setData({
18:28:46.646 dataDict: e.detail.value,
18:28:46.671 isChanged: this.isChanged,
18:28:46.696 changedIndex: this.changedIndex })', 'prevPage.setData' is undefined) __ERROR

重现步骤

[步骤]

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号] 2.6.11.20200409

[windows版本号]

[mac版本号] 10.15.4

uni-app运行环境说明

[运行端是h5或app或某个小程序?] app

[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式说明:自定义组件模式?纯nvue模式?v3模式?]

App运行环境说明

[Android版本号]

[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2020-04-21 18:37 负责人:DCloud_UNI_HT 分享
已邀请:
DCloud_UNI_HT

DCloud_UNI_HT

uni-ui 不可用是你说的这个问题造成的吗 ?

而且 uni-app不支持也不可以使用 setData
setData 是小程序的方法 设置的是小程序Page对象上的data,并非更新的vm对象上的data,即使不报错,也不可以使用,这样会导致数据同步问题。

修改其他页面数据,推荐使用 uni.$emit()

  • 1***@qq.com (作者)

    感谢解答,使用uni.$emit()可以完成页面传值功能,之前一直在用setData也可以。

    uni-ui不可用不是这个问题导致的,现在还是不可用,一直报如下错误,所有uni-ui里的组件都不可用了,

    我用npm i @dcloudio/uni-ui 重新集成,或者从github上下载源码导入都会报这个错误。


    grid不可用:node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue:[-1,5]$r[0][sc] is undefined

    grid不可用:node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue:[-1;-1,5,7-1]$r[0][i] is undefined

    load more不可用:node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue:[-1,41]$r[0][sc] is undefined

    tag不可用:node_modules/@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue:[-1,37-7-0]$r[0][i] is undefined

    2020-04-22 11:33

  • DCloud_UNI_HT

    回复 1***@qq.com: uni-ui 的问题我在排查一下,npm 你安装的是什么版本?

    2020-04-22 11:40

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: npm -v 6.14.3

    2020-04-22 11:43

  • DCloud_UNI_HT

    回复 1***@qq.com: 我的表达有错误,我是说 npm 安装的 uni-ui 是什么版本

    2020-04-22 11:44

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 我直接用 npm i @dcloudio/uni-ui 安装的,看npm上 Version 1.1.9。但我安装完成在路径 @dcloudio/uni-ui/package.json 里面 "version": "0.0.8" 请问如何查看正确的版本号?

    2020-04-22 11:49

  • DCloud_UNI_HT

    回复 1***@qq.com: 0.0.8 手动改成1.1.9试试 ,然后重新 npm install ,保证hx 或者cli 是最新版本

    2020-04-22 11:54

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 还是不行,这样并不会更改 @dcloudio/uni-ui/lib 下面的拓展组件,npm install 后会在 uni-ui 路径下创建package-lock.json 和 node_modules 文件夹。使用 uni-ui/lib/ 下的组件还是会报错。

    2020-04-22 12:05

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 手动更改了 "@dcloudio/uni-ui": "1.1.9", npm instal 之后 uni-ui 版本更新为1.1.9了,在使用组件时还会报错:

    14:51:14.806 cid unmatched [object Object]

    14:51:14.831 TypeError: Invalid attempt to destructure non-iterable instance.

    14:51:14.856 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.

    2020-04-22 14:53

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: HBuilder X 已更新为 2.6.15.20200421

    2020-04-22 14:54

  • DCloud_UNI_HT

    回复 1***@qq.com: 我排查一下

    2020-04-22 15:07

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 您好,请问找到问题原因了吗?有解决方法吗?

    2020-04-23 11:21

  • DCloud_UNI_HT

    回复 1***@qq.com: 问题我本地复现不出来,能否提供一个简单可复现问题的 demo?

    2020-04-23 12:58

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 评论里提供了demo

    2020-04-23 13:46

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 您好,请问能否复现该问题?

    2020-04-23 16:15

  • 1***@qq.com (作者)

    回复 DCloud_UNI_HT: 您好,请问demo能否复现该问题?能否告知是什么原因导致的吗?谢谢

    2020-04-24 15:05

1***@qq.com

1***@qq.com (作者)

@DCloud_UNI_HT 您好,demo见附件,HBuilder X 版本2.6.15.20200421,真机测试iPhone Xr 13.3.1,可以复现该问题。

新建uni-app项目, npm init -y 初始化项目, npm install @dcloudio/uni-ui 安装uni-ui 组件
引用组件:

import {  
    uniTag  
} from "@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue"  

export default {  
    components: {  
         uniTag  
    },  
}

使用uni-tag

<uni-tag :text="title" type="primary" inverted></uni-tag>

结果报错:

13:37:28.097  cid unmatched [object Object]  
13:37:28.122  TypeError: Invalid attempt to destructure non-iterable instance.  
13:37:28.144 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
1***@qq.com

1***@qq.com (作者)

@DCloud_heavensoft 求大神关注该问题

m***@163.com

m***@163.com

我也遇到了这个问题。之前setData没有任何问题,更新版本后说setData is not a function.

  • DCloud_UNI_HT

    setData 一直都不建议使用,具体看我最上面的回复。以前虽然能用,没有报错,但是会有隐藏的问题,只是没有暴露出来而已,到v3 规范了写法,所以会报错。

    2020-06-01 14:14

该问题目前已经被锁定, 无法添加新回复