Nuxtにinfomationの情報をつけたいと思いヘッドレスCMSのmicroCMSを使ってみることにしました。
環境: MacOS(catalina)
NODE: v12.14.0
yarn: 1.21.1
vue: @vue/cli 4.1.2
nuxt: @nuxt/cli v2.11.0
mode: 'universal'(SSR)
axiosはインストール済みnuxt.configに追加。
nuxt.config.js
1 modules: [ 2 '@nuxtjs/axios', 3 ], 4 axios: { 5 // proxyHeaders: false 6 }, 7
下記の記事をもとにコードをかいていきました。
Nuxtで最近話題のMicroCMSを使用してFirebaseで公開する
まずはTopページにコードを記入、ここまでは無事出力できました。
index.vue
1<template lang="pug"> 2 main 3 mainvisual 4 section01 5 section02 6 section03 7 div 8 .items 9 .item-box(v-for='item in items' :key='item.id') 10 .name 11 | {{ item.title }} 12 13</template> 14 15<script> 16 17import Mainvisual from '~/components/home/Mainvisual.vue' 18import Section01 from '~/components/home/Section01.vue' 19import Section02 from '~/components/home/Section02.vue' 20import Section03 from '~/components/home/Section03.vue' 21 22export default { 23 components: { 24 Mainvisual, 25 Section01, 26 Section02, 27 Section03 28 }, 29 data () { 30 return { 31 items: '' 32 } 33 }, 34 async asyncData ({ $axios }) { 35 const data = await $axios.$get('------------------------------------', { 36 headers: { 'X-API-KEY': '-----------------------------------' } 37 }) 38 return { 39 items: data.contents 40 } 41 } 42} 43 44</script>
section4としてコンポーネント化しました。
index.vue
1<template lang="pug"> 2 main 3 mainvisual 4 section01 5 section02 6 section03 7 section04 8 9</template> 10 11<script> 12 13import Mainvisual from '~/components/home/Mainvisual.vue' 14import Section01 from '~/components/home/Section01.vue' 15import Section02 from '~/components/home/Section02.vue' 16import Section03 from '~/components/home/Section03.vue' 17import Section04 from '~/components/home/Section04.vue' 18 19export default { 20 components: { 21 Mainvisual, 22 Section01, 23 Section02, 24 Section03, 25 Section04 26 } 27} 28 29</script>
そしてデータが出力されたかと思いきや何もでてきません。
コンポーネント化するとどうして何も出力されないのでしょうか?
なにか別の設定があるのでしょうか?
※追記Section04.vueです。
Section04.vue
1<template lang="pug"> 2 div 3 .items 4 .item-box(v-for='item in items' :key='item.id') 5 .name 6 | {{ item.title }} 7 8</template> 9 10<script> 11export default { 12 data () { 13 return { 14 items: '' 15 } 16 }, 17 async asyncData ({ $axios }) { 18 const data = await $axios.$get('https://*******.microcms.io/api/v1/news', { 19 headers: { 'X-API-KEY': '****************************' } 20 }) 21 return { 22 items: data.contents 23 } 24 } 25} 26 27</script>
解決
<template lang="pug"> div .items .item-box(v-for='item in items' :key='item.id') .name | {{ item.title }} </template> <script> export default { data () { return { items: '' } }, mounted() { this.asyncData() }, asyncData () { await axios.get('https://*******.microcms.io/api/v1/news',{ headers: { 'X-API-KEY': '****************************' } }) .then(res =>{ console.log(res) this.items= res.data.contents }) } } </script>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/15 06:36
2020/02/17 03:51
2020/02/17 07:57