前提・実現したいこと
Vueでvuexを使っており、store
内のaction
で楽天商品検索APIを叩き、返ってきた値をmutation
経由でstate
に渡したい。
API自体はうまく叩けていることを確認済み。
どなたかアドバイスを頂けますと幸いです。
発生している問題・エラーメッセージ
Uncaught (in promise) ReferenceError: data is not defined
該当のソースコード
store/index.js
javascript
1import Vue from 'vue' 2import Vuex from 'vuex' 3import axios from '../plugins/axios' 4import { 5 CHANGE_KEYWORD, 6 SEARCH 7} from './mutation-types' 8 9Vue.use(Vuex) 10 11const state = { 12 keyword: '', 13 items: [] 14} 15 16const getters = { 17 items: state => state.items 18} 19 20const mutations = { 21 [CHANGE_KEYWORD] (state, keyword) { 22 state.keyword = keyword 23 }, 24 [SEARCH] (state, items) { 25 state.items = data.Items 26 } 27} 28 29function searchItem(keyword) { 30 return axios.get('https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706', { 31 params: { 32 applicationId: "XXXXXXXXXXXXXXXXX", 33 keyword: keyword, 34 giftFlag: 1, 35 } 36 }) 37} 38 39const actions = { 40 [CHANGE_KEYWORD] ({ commit }, keyword) { 41 commit(CHANGE_KEYWORD, keyword) 42 }, 43 44 [SEARCH] ({ commit, state }) { 45 searchItem(state.keyword) 46 .then(data => { 47 commit(SEARCH, data.Items) 48 }) 49 } 50} 51 52export default new Vuex.Store({ 53 namespaced: true, 54 state, 55 getters, 56 mutations, 57 actions 58}) 59
mutaionsのこの部分でうまく渡せてない。
[SEARCH] (state, items) { state.items = data.Items }
推測
state.items
に代入する値の形式が間違っているのかも?と推測し色々試しましたが、正しい書き方が分からなかったので、difind
のままでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。