いつも大変お世話になっております。
現在Shopifyを利用してサイトを作成しています。
商品詳細ページにアクセスした際に、①商品全体の情報、②個別の商品に紐づいたメタ情報 の
2点を別々で取得する必要があり、取得の際にaxiosを利用して取得しています。
できれば一度の axios.get()
でそれぞれの情報を取得することができれば良いのですが、
それはshopifyの仕様上不可能なようなので、やむなく1つめの axios.get()
の内部で、
別で axios.get()
を実行しています。
今回生じている問題ですが、
2つ目(1つ目の axios.get()
の内部で実行している別のaxios
)のaxios
で返ってきたデータを
data()
の currentVariantMetafields
に格納したいのですが、うまく格納されません。
調べてみるとアロー演算子を使用するのがよくないなど情報があるのですが、
当方エンジニアではなく付け焼き刃で行っているもので
アロー演算子からfunctions()の関数に変更してみても改善せずよくわからない状況になっています。
もし解決策が判る方がいらっしゃればご教授いただけますと幸いです。
それではどうぞ宜しくお願い致します。
###行いたいこと
data
の currentVariantMetafields
に selectCallback()
内で実行している
axios
で返ってきた値を格納したい。
###ソースコード
javascritpt
1// eslint-disable-next-line import/no-extraneous-dependencies 2import Vue from 'vue/dist/vue.min'; 3import axios from 'axios'; 4 5new Vue({ 6 7 delimiters : [ '${', '}' ], 8 9 data(){ 10 return { 11 12 siteUrl : '', 13 productUrl : '', 14 currentVariant : '', 15 currentVariantMetafields : [] 16 17 }; 18 }, 19 20 created(){ 21 const currentUrl = new URL(window.location.href); 22 this.siteUrl = currentUrl.origin; 23 const params = currentUrl.searchParams; 24 params.delete('variant'); 25 this.productUrl = currentUrl.href; 26 27 // 商品情報を取得 28 axios.get(`${this.productUrl}.js`) 29 .then((res) => { 30 // eslint-disable-next-line no-new,no-undef 31 new Shopify.OptionSelectors('product-select', { 32 product : res.data, 33 onVariantSelected : this.selectCallback, 34 enableHistoryState : true 35 }); 36 }) 37 .catch((err) => { 38 console.log(err); 39 }); 40 }, 41 42 methods : { 43 44 selectCallback(variant, selector){ 45 // 商品情報のメタ情報を取得 46 const variantUrl = `${this.siteUrl}/admin/products/${selector.product.id}/variants/${variant.id}/metafields.json`; 47 48 axios.get(variantUrl) 49 .then((res) => { 50 this.currentVariantMetafields = res.data; 51 }) 52 .catch((err) => { 53 console.log(err); 54 }); 55 56 // 出力して確認すると格納されていない 57 console.log(this.currentVariantMetafields); 58 } 59 60 } 61 62}).$mount('#app'); 63
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/22 01:38
2021/10/22 01:57