如何解决 filtered API 结果导致 Vue app 返回 undefined?

How to solve filtered API results in Vue app returning undefined?

作为新手,我正在努力了解 Vue,但我在 Github 工作 api 应用程序的功能方面遇到了困难。可以在此处查看完整项目 https://codesandbox.io/s/modest-banach-u6fzg

我在筛选 api 结果时遇到问题,尤其是“加载更多”按钮,理想情况下,该按钮会将 api 的结果筛选为 10 个批次。问题是:

非常感谢任何建议,以及任何关于我如何实施该应用程序的反馈。

谢谢! 麦克

您需要使用计算道具而不是函数,如果 jobs 再次加载,您还应该重置加载项计数器。 参见 modified code

<template>
  <div v-if="jobs.length">
    <div v-for="job in filterJobs" v-bind:key="job.id">
      <!-- <div v-for="job in jobs" v-bind:key="job.id"> -->
      <Job v-bind:job="job" />
    </div>
    <button v-on:click="loadMore">Load More</button>
  </div>
</template>

<script>
import Job from "./Job";
export default {
  name: "Jobs",
  components: {
    Job,
  },
  data() {
    return {
      jobCount: 10,
    };
  },
  props: ["jobs"],
  watch: {
    // watcher to reset a counter
    jobs(newValue, oldValue) {
      this.jobCount = 10;
    },
  },
  computed: {
    // computed prop instead of function, that way it would be reactive
    filterJobs() {
      return this.jobs.slice(0, this.jobCount);
    },
  },
  methods: {
    loadMore() {
      // we need to check if we are exceeding a length of jobs array or not
      if (this.jobCount + 10 <= this.jobs.length) {
        this.jobCount += 10;
      } else {
        this.jobCount = this.jobs.length;
      }
    },
  },
};
</script>

<style lang="stylus" scoped></style>