uni-app 微信小程序unicloud-db组件中获取data中定义的变量数据是undefined

uni-app 微信小程序unicloud-db组件中获取data中定义的变量数据是undefined

操作步骤:

  • 微信小程序中,在unicloud-db组件中使用data中的变量的时候打印出为undefined

预期结果:

  • 正常显示

实际结果:

  • 显示为undefined

bug描述:

如图,data中定义一个叫做query的字段,设置默认值为22,在unicloud-db组件中使用的时候打印出为undefined,在unicloud-db外部使用的时候正常显示。 app中正常显示,只有小程序有问题。

信息类别 信息内容
产品分类 uniCloud/App
PC开发环境 Windows
PC开发环境版本 window10
HBuilderX类型 正式
HBuilderX版本 3.1.18
第三方开发者工具 RC1.05.2106091
基础库版本 2.17.0
项目创建方式 HBuilderX

Image 1 Image 2


更多关于uni-app 微信小程序unicloud-db组件中获取data中定义的变量数据是undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

没人吗

更多关于uni-app 微信小程序unicloud-db组件中获取data中定义的变量数据是undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html


哪家小程序,直接打印data看看,在没有请求数据前data没有值 不应该直接访问.length

微信小程序,我不是访问unicloud-db请求得到的data,而是我自己定义的变量query无法在unicloud-db组件中使用

回复 口区: 如果unicloud-db组件当前正在请求数据,修改where是无效的,你可以配置loadtime="manual"控制手动加载数据,然后在页面的onReady 中修改where

回复 DCloud_uni-ad_HDX: 我没有修改where,我是定义的一个变量叫做query,默认值随便设置的是22,在unicloud-db组件中展示,显示的是undefined,在unicloud-db组件外面就能正常显示

这张图再加上上面第二张图,还描述的不清楚吗

有人吗

这是一个典型的微信小程序中数据绑定时机问题。在微信小程序环境下,unicloud-db 组件的数据绑定存在异步时序差异。

问题原因:微信小程序的 unicloud-db 组件在初始化时,可能先于页面数据初始化完成,导致在组件内部访问 data 中的变量时值为 undefined

解决方案:

  1. 使用 v-if 控制渲染时机
<unicloud-db v-if="query" :where="query"></unicloud-db>
  1. onReady 生命周期中设置数据
onReady() {
  this.setData({
    query: 'your_query_value'
  })
}
  1. 使用计算属性或监听器
computed: {
  computedQuery() {
    return this.query || 'default_value'
  }
}
  1. 确保数据在 onLoad 中初始化
onLoad() {
  this.query = 'initial_value'
}
回到顶部