制作带延迟的 API 数据

调整数据结构

一般在项目下 src 文件夹下,创建 api 文件夹,创建需要的文件来存放数据

结构如下:

数据结构

写入数据

将需要的数据,写入

  1. const _comments = [
  2. { text: '哈哈' },
  3. { text: '嘿嘿' },
  4. { text: '呵呵' }
  5. ]

数据部分就按照自己的要求写入

  1. export default {
  2. getComments (cd) {
  3. setTimeout(() => cd(_comments), 2000)
  4. }
  5. }

导出一个对象,对象里有一个 getComments 方法,两秒后将数据导入 getComments 函数

读取数据

读取数据时,需要先导入

  1. import comment from '../api/comment'

直接调用 getComments 方法就可读取数据

  1. // created 生命周期函数
  2. created () {
  3. //调用 api 的 getComments 方法
  4. comment.getComments(posts =>
  5. //通过 形参 posts 拿到数据
  6. console.log('created', posts)
  7. )
  8. }

使用

在项目中我们一般将数据,通过异步的 action 将数据请求到本地中,在通过 mutation 将数据放入 state 中。如果在组件中使用,需要发送一个 dispatch 进行触发 action 请求到数据

在 store 中,将数据从 api 请求到 state

  1. import comment from '../../api/comment'
  2. import * as types from '../mutation-types'
  3. let state = {
  4. all: [
  5. ]
  6. }
  7. const mutations = {
  8. [types.ADD_COMMENT] (state, { text }) {
  9. state.all.push({ text })
  10. },
  11. //将 数据 comments 赋给 state
  12. [types.LOAD_COMMENTS] (state, { comments }) {
  13. state.all = comments
  14. }
  15. }
  16. // 异步 action
  17. const actions = {
  18. //getAllPosts 方法
  19. getAllPosts ({ commit }) {
  20. // 通过 commit 参数触发 mutations
  21. comment.getComments(comments => {
  22. // comment.getComments 进行数据请求
  23. // comments 导出数据
  24. commit(types.LOAD_COMMENTS, { comments })
  25. //触发 mutations 导入 comments 数据
  26. })
  27. }
  28. }
  29. export default {
  30. state,
  31. actions,
  32. mutations
  33. }

在组件中,通过 dispatch 触发 action

  1. created () {
  2. this.$store.dispatch('getAllPosts')
  3. console.log('created',this.$store.state.comment.all)
  4. }

参考