uni-app unicloud-db 组件 manual开关在where为变量时无效
uni-app unicloud-db 组件 manual开关在where为变量时无效
操作步骤:
where="_id!='${serv._id}'&&cid=='${serv.cid}'"
## 预期结果:
- where里面的变量依据url的参数,先读取库获取到相应的serv记录
- 在滚动到推荐板块时,再调用loadData刷新数据
实际结果:
- serv从无到有发生变化时,不管设置manual与否,unicloud-db组件都会去读库。
## bug描述:
在unicloud-db组件中,如果where条件或其他的如orderby, field等条件包含变量且发生变化时,manual设置无效。既然是手动加载,理应在任何时候,都是需要调用loadData来加载数据。unicloud-db组件的源代码显示,manual参数只在created里有效。
| 信息类别 | 描述 |
|---|---|
| 产品分类 | uniCloud/腾讯云 |
更多关于uni-app unicloud-db 组件 manual开关在where为变量时无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
另外,使用v-if控制ucloud-db组件的懒加载,在小程序中,无论v-if是否为true,都会读库,而且小程序的wxml里面没有挂在该组件的代码,这就有点莫名其妙了。
H5中不会出现这样的情况,可以实现懒加载。
更多关于uni-app unicloud-db 组件 manual开关在where为变量时无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
目前 manual 仅对页面 created 时有效,你的需求是存在的(加载数据前依赖上次的返回结果),我们会在下个版本改进,当前版本可以手动修改 HBuilderX 下面的源码
v-if 问题是哪家小程序有问题?
已手动修改源代码,v-if问题是微信小程序。
前几天报的一个update的bug,还一直没有反应。 https://ask.dcloud.net.cn/question/119255
HBuilderX 3.1.0+ 新增属性 loadtime=“manual”,完全手动,组件内部不处理任何逻辑
这是一个已知的uni-app uniCloud组件行为特性。当unicloud-db组件的where条件中包含的变量值发生变化时,组件会自动触发数据重新加载,即使设置了manual=true。
这是因为unicloud-db组件内部通过watch监听了where属性的变化。当检测到where条件中的变量值从初始状态(如undefined)变为有效值时,组件会认为查询条件已就绪,自动执行查询。
解决方案建议:
- 在变量初始化时设置默认值,避免从undefined到有效值的触发
data() {
return {
serv: {
_id: '',
cid: ''
}
}
}
- 使用v-if控制组件渲染时机,在serv数据准备好后再渲染组件
<unicloud-db v-if="serv._id"
:where="_id!='${serv._id}'&&cid=='${serv.cid}'"
manual>
</unicloud-db>

