Как передать ответ axios на аргумент функции? - PullRequest
0 голосов
/ 15 марта 2019

Существует процесс сбора данных пользователя следующим образом и сохранения данных поста пользователя в объекте.
Также пытается сохранить первый комментарий поста в объекте поста.

getLatestCommentData(dataList) {
  if (dataList.length === 0) {
    return {}
  } else {
    return {
      body: dataList[0].body,
      created_at: dataList[0].created_at
    }
  }
},

async fetchUserInfo({ commit, dispatch }, { userId }) {
  const user = await this.$axios.$get(`/users/${userId}`)
  await Promise.all([
    this.$axios.$get(`users/${userId}/posts`).then(async posts => {
      user.posts = await Promise.all(
        posts.map(async post => ({
          ...post,
          latestComment: await dispatch(
            'getLatestCommentData',
            this.$axios.$get(`/posts/${post.id}/comment`)
          )
        }))
      )
    })
  ]).then(() => {
    commit('setUserInfo', user)
  })
},

Однако в случае вышеприведенного кода содержимое аргумента dataList для getLatestCommentData выглядит следующим образом, и оно не работает должным образом.

{ dispatch: [Function],
  commit: [Function],
  getters: { mainUser: [Getter] },
  state: { mainUser: {} },
  rootGetters: { .... },
  rootState:{ .... } },

Как я могу передать данные ответа axios на dataList?

1 Ответ

0 голосов
/ 15 марта 2019

Используйте getLatestCommentData как функцию.Объявите это:

function getLatestCommentData(dataList) {
  if (dataList.length === 0) {
    return {}
  } else {
    return {
      body: dataList[0].body,
      created_at: dataList[0].created_at
    }
  }
}

И используйте его где-нибудь позже:


posts.map(async (post) => ({
  ...post,
  latestComment: getLatestCommentData(await this.$axios.$get(`/posts/${post.id}/comment`))
  })
);
...