You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中Firestore的limit方法如何正确引用data内的page变量

问题原因

你遇到的报错是因为firestore选项直接声明为对象时,查询语句会在组件实例初始化完成前执行,此时this并不指向当前组件实例,自然无法读取到data中定义的page变量。

解决方案

1. 静态读取page值(仅初始化时读取一次)

将firestore选项从对象改为函数形式,vuefire会在组件实例初始化完成后再执行该函数,此时this已经绑定为组件实例,可以正常访问this.page:

export default {
  data() {
    return {
      page: 1,
    }
  },
  methods: {
  },
  // 改为函数形式,返回需要绑定的集合配置
  firestore() {
    return {
      Words: db.collection("Words").where("incomplete", "==", true).limit(this.page)
    }
  },
}

2. 动态响应page变化(分页场景适用)

如果后续page会动态修改(比如点击下一页切换页码),需要额外加监听器,在page变化时重新绑定Firestore查询:

export default {
  data() {
    return {
      page: 1,
    }
  },
  watch: {
    // 监听page变化,重新绑定查询
    page(newVal) {
      this.$bind('Words', db.collection("Words").where("incomplete", "==", true).limit(newVal))
    }
  },
  firestore() {
    return {
      Words: db.collection("Words").where("incomplete", "==", true).limit(this.page)
    }
  },
}

内容的提问来源于stack exchange,提问作者Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:51:01