【问题标题】:Vuejs Iterate through a ref objectVuejs 遍历一个 ref 对象
【发布时间】:2021-12-21 22:54:21
【问题描述】:

我有一个小问题, 我从那个方法中得到了我的 ref 对象

const dataAnimals = ref([])
function getDataAnimals() {
  axios.get('/json/data_animal.json').then((response) => {
    dataAnimals.value = response.data
  })
}
getDataAnimals()

我想使用另一种方法来使用该 ref 对象:

function countAnimal(type) {
  dataAnimals.forEach((item) => {
    if (animal.animal == type) {
      total_hen += dataMint.value[animal.template_id]
    }
    return total_hen
  })
}
const totalHen = countAnimal('hen')

但我无法遍历:

dataAnimals.value.forEach((item) => {

有没有办法让它工作?

谢谢你:)

【问题讨论】:

  • 你确定,response.data 实际上是返回一个数组吗?也许它是一个包含数组的对象?
  • 您好 Thomas,这是 reponse.data 内容:prnt.sc/1yvhnkq,这是 dataAnimals:prnt.sc/1yvhsau

标签: javascript loops iterator vuejs3


【解决方案1】:

由于响应是一个对象而不是一个数组,你不能用forEach对其进行迭代,你需要使用Object.entries()

function countAnimal(type) {
    let total = 0;
    for (const [key, item] of Object.entries(dataAnimals)) {
        if (item.animal === type)  {
            total++;
        }
    }
    return total;
}
const totalHen = countAnimal('hen');

我会使用响应式对象:

const dataAnimals = ref(null);
function getDataAnimals() {
    axios.get('/json/data_animal.json').then((response) => {
        dataAnimals.value = response.data
    });
}
getDataAnimals()

当然,如果您希望该计数也具有反应性,则需要使用计算属性。

【讨论】:

猜你喜欢
  • 2020-08-21
  • 2022-06-25
  • 1970-01-01
  • 2018-12-12
  • 2013-03-02
  • 2020-08-02
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多