Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)

简介: Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)


下面是老办法,可以不用看了,没什么价值,仅作为参考!!


一、简介

  • 服务器渲染模式中,分页获取数据常见的方式是:
  • 服务器数据全返前端自行处理
  • 异步请求数据,本地追加标签元素
  • 链接带分页参数进行获取

二、URL 带 分页参数 进行分页获取数据

  • 案例一:当前页面进行分页获取数据
<template>
  <div class="content-view">
    <!-- 列表数据 -->
    <a-list class="list-view" item-layout="horizontal" :data-source="data">
      <a-list-item slot="renderItem" slot-scope="item">
        {{ item }}
      </a-list-item>
    </a-list>
    <!-- 加载更多 -->
    <a-button @click="touchMore">加载更多</a-button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 数据列表
      data: [],
      // 当前页码
      page: this.$route.query.page || 0
    }
  },
  // 监听路由 query 中的 page 参数变化时就重新调用 asyncData,字段参数可自定义
  watchQuery: ['page'],
  // 异步加载数据
  asyncData({ query, params }) {
    // 输出页面参数
    console.log(query, params)
    // 模拟获取分页数据
    const page = (query.page ? Number(query.page) : 0) + 1
    const datas = []
    for (let index = 0; index < page; index++) {
      datas.push(index)
    }
    // 返回分页数据
    return { data: datas }
  },
  methods: {
    // 切换分页数据
    touchMore () {
      // 切换分页数据
      this.$router.push({ name: 'index', params: { id: 1 }, query: { page: this.page + 1 } })
    }
  }
}
</script>
<style>
.content-view {
  margin: 0 100px;
}
</style>
  • 案例二:分页获取数据子组件展示
    父组件 - 路由页面 index.vue
<template>
  <div class="content-view">
    <!-- 列表数据 自定义组件 -->
    <Dzm :data="data"></Dzm>
    <!-- 加载更多 -->
    <a-button @click="touchMore">加载更多</a-button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 数据列表
      data: [],
      // 当前页码
      page: this.$route.query.page || 0
    }
  },
  // 监听路由 query 中的 page 参数变化时就重新调用 asyncData,字段参数可自定义
  watchQuery: ['page'],
  // 异步加载数据
  asyncData({ query, params }) {
    // 输出页面参数
    console.log(query, params)
    // 模拟获取分页数据
    const page = (query.page ? Number(query.page) : 0) + 1
    const datas = []
    for (let index = 0; index < page; index++) {
      datas.push(index)
    }
    // 返回分页数据
    return { data: datas }
  },
  methods: {
    // 切换分页数据
    touchMore () {
      // 切换分页数据
      this.$router.push({ name: 'index', params: { id: 1 }, query: { page: this.page + 1 } })
    }
  }
}
</script>
<style>
.content-view {
  margin: 0 100px;
}
</style>
  • 子组件 Dzm.vue 页面数据更新
<template>
  <!-- 展示列表 -->
  <a-list class="list-view" item-layout="horizontal" :data-source="dataSource">
    <a-list-item slot="renderItem" slot-scope="item">
      {{ item }}
    </a-list-item>
  </a-list>
</template>
<script>
export default {
  // 外部传入的数据
  props: {
    data: {
      type: Array,
      default: () => []
    }
  },
  watch: {
    // 监听数据变化并重新赋值给当前数据源进行展示
    data: {
      handler (val) {
        this.dataSource = val
      },
      immediate: true
    }
  },
  data () {
    return {
      // 数据源
      dataSource: []
    }
  }
}
</script>
<style>
</style>
  • 上面两种 分页获取数据 方案效果一致

三、不刷新页面,异步请求数据,页面追加数据

  • 这种方案就是怕遇到使用 第三方UI 框架,要么纯拼接,要么找找这个库是否有支持的 cdn 使用,如果有就会方便很多。
  • Nuxt 引入外部CDN插件配置
<template>
  <div class="content-view">
    <!-- 加载更多 -->
    <a-button @click="touchMore">加载更多</a-button>
  </div>
</template>
<script>
export default {
  methods: {
    // 切换分页数据
    touchMore () {
      // 当前页面主视图
      const contentView = document.getElementsByClassName('content-view')[0]
      // 创建新的标签
      var div = document.createElement("div");
      div.innerText = "异步请求数据,不刷新页面,追加数据"
      // 追加到指定内容位置
      contentView.appendChild(div);
    }
  }
}
</script>
<style>
.content-view {
  margin: 0 100px;
}
</style>

相关文章
|
1月前
|
JavaScript 前端开发
JavaScript分页功能
JavaScript分页功能
|
21天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
1月前
|
前端开发 JavaScript
JS-数据筛选
JS-数据筛选
33 7
|
1月前
|
JavaScript 数据安全/隐私保护
2024了,你会使用原生js批量获取表单数据吗
2024了,你会使用原生js批量获取表单数据吗
50 4
|
2月前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
89 11
|
1月前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
29 0
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
|
2月前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
3月前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
65 0
|
3月前
|
移动开发 前端开发 JavaScript
前端表单验证的完美攻略:HTML5属性与JavaScript方法的无缝对接,让你的Web应用数据输入既安全又优雅
【8月更文挑战第31天】本文介绍前端表单验证的重要性及其实现方法,利用HTML5的内置属性如`required`、`pattern`和`minlength`进行基本验证,并借助JavaScript处理复杂逻辑,如密码确认。通过示例代码详细展示了如何结合两者实现高效且友好的表单验证,同时使用CSS增强用户体验。此方法简化开发流程并提升验证效果。
97 0
下一篇
无影云桌面