Nuxt.js + axios로 비동기 데이터 통신 핸즈온 바람
여기서 말하는 비동기 데이터 통신이란
api 서버에서 데이터를 검색하여 페이지에 표시한다고 가정합니다.
전제
npm v5.2.0以上
가 로컬 또는 개발 환경에 있음 프로젝트 만들기
create-nuxt-app [プロジェクト名]
create-nuxt-app [プロジェクト名]
package.json
에 axios
가 들어 있는지 확인 package.json
{
"name": "async-test",
"version": "1.0.0",
"description": "My supreme Nuxt.js project",
"author": "yosuke0517",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore ."
},
"dependencies": {
"nuxt": "^2.0.0",
"@nuxtjs/axios": "^5.3.6"
},
"devDependencies": {
"@nuxtjs/eslint-config": "^1.0.1",
"@nuxtjs/eslint-module": "^1.0.0",
"babel-eslint": "^10.0.1",
"eslint": "^6.1.0",
"eslint-plugin-nuxt": ">=0.4.2"
}
}
동작 확인 (일단 데포로 OK)
학습에 사용할 데이터 만들기
JSONPlaceholder 이라는 웹 서비스를 사용. 실제 실무에서도 데이터를 준비하는 비용을 줄일 수 있다.
JSONPlaceholder 이라는 웹 서비스를 사용. 실제 실무에서도 데이터를 준비하는 비용을 줄일 수 있다.
데이터 검색 및 표시
index.vue
<template>
<div class="container">
<div>
{{ users }}
</div>
</div>
</template>
<script>
const axios = require('axios')
const url = 'https://jsonplaceholder.typicode.com/users'
export default {
asyncData ({ params }) { //コンポーネントを初期化する前に非同期処理を行えるようにするメソッド
return axios.get(url) //apiからのデータ取得をリクエスト
.then((res) => { //thenはレスポンスを受け取った段階で呼ばれるメソッド(res)にはレスポンスデータが入っている
return { users: res.data } //res.dataにはjsonオブジェクトが入っている
})
}
}
</script>
1인분의 데이터를 꺼내 표시
index.vue
{{ users[0] }}
토카
index.vue
{{ users[0].id }},{{ users[0].name }}
토카
v-for에서 여러 데이터를 목록으로 표시합니다.
index.vue
<!--{{ users[0].id }},{{ users[0].name }}-->
<ul>
<li v-for="user in users" :key="user.id">
{{ user.id }},{{ user.name }}
</li>
</ul>
오류 처리
상황
index.vue
내의 url을 존재하지 않는 url로 변경const url = 'https://jsonplaceholder.typicode.com/usersxxx'
사고방식
error
를 넣고 catchメソッド
로 처리한다 index.vue
export default {
asyncData({ params, error }) {
return axios.get(url)
.then((res) => {
return { users: res.data }
})
.catch((e => {
//errorメソッドにはステータスコードと表示するメッセージを指定する
error({ users: e.response.status, message: '404Error!!!!!' })
}))
}
}
우선 이상입니다.
Reference
이 문제에 관하여(Nuxt.js + axios로 비동기 데이터 통신 핸즈온 바람), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosuke_takeuchi/items/6b5fab5e61dc1c2d9b8f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Nuxt.js + axios로 비동기 데이터 통신 핸즈온 바람), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yosuke_takeuchi/items/6b5fab5e61dc1c2d9b8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)