いつも大変お世話になっております。
久しぶりにVue CLIを用いて簡単なシミュレーションアプリを作成しているのですが、
APIで取得したデータをhtml上に展開するところでハマってしまっています。
例えば、
const plan = { "id": 805, "date": "2021-02-20T23:49:22", "date_gmt": "2021-02-20T14:49:22", "title": { "rendered": "タイトルタイトルタイトルタイトル" } }
というデータがあった際に、{{ plan.title.rendered }}
でタイトルが出力されると思うのですが、
なぜか 下記2つのエラーが出てしまいます。
Uncaught TypeError: Cannot read property 'rendered' of undefined
[Vue warn]: Unhandled error during execution of render function at <Plan> at <Simulation>
ちなみに、{{ plan.title }}
では、ちゃんと"rendered": "タイトルタイトルタイトルタイトル"
と出力されます。
深い階層になった途端にエラーが発生してしまうのでなんでだろう?とはてな状態です。
どなたか詳しい方がいらっしゃれば、ご教授いただけますと幸いです。
それではどうぞ宜しくお願い致します。
###環境
% vue --version
@vue/cli 5.0.0-beta.2
ソースコード
javascript
1// store/index.js 2 3import { createStore } from 'vuex' 4import axios from 'axios' 5 6export default createStore({ 7 8 state : { 9 plan : "" 10 }, 11 12 getters : { 13 plan : (state) => state.plan, 14 }, 15 16 mutations : { 17 setPlan : (state, { plan }) => { 18 state.plan = plan 19 } 20 }, 21 22 actions : { 23 24 async fetchPlan({ commit }, { id }){ 25 26 const url = `https://localhost:8890/wp-json/wp/v2/posts/${id}/`; 27 28 const planRowData = await axios.get(url) 29 const plan = planRowData.data 30 31 if( !plan.id ) throw new Error('Invalid Post.') 32 33 commit('setPlan', { plan }) 34 35 } 36 37 } 38 39})
// App.vue <template> <div id="simulation" class="simulation"> <section> <Plan/> </section> </div> </template> <script> import Plan from './components/Plan' export default { name : 'Simulation', components : { Plan } } </script>
// Plan.vue <template> <div> {{ plan.title.rendered }} // Uncaught TypeError: Cannot read property 'rendered' of undefined 発生! </div> </template> <script> import { mapGetters, mapActions } from "vuex"; export default { name : 'Plan', created(){ this.fetchPlan({ id : 805 }); }, computed : { ...mapGetters([ 'plan' ]) }, methods : { ...mapActions([ 'fetchPlan' ]) } } </script>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/27 07:59
2021/07/27 08:34
2021/07/27 10:49