質問するログイン新規登録
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2422閲覧

外部関数から取得するAPIの返り値をcreatedの中でdataに登録できない

span

総合スコア32

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/01/23 14:35

編集2020/01/26 18:16

0

0

axiosを使用し外部関数としてAPIを取得する関数を作成しました。
その関数を使用しcreatedの中でAPIから返る値をdataに代入したいのですが下記に記載した内容ではうまくいきません。
こちらはどのようにすればcreated内で値を取得しdataに代入できるようになるのでしょうか?
ご教示いただければ幸いです。よろしくお願いいたします。

javascript

1// 外部関数、コンポーネント側でグローバルに使用できるように 2// import * as Api from "./axios" 3// Vue.prototype.$Api = Api 4// でグローバルに登録 5 6import axios from "axios" 7 8const get = async (url) => { 9 return await axios.get(url) 10} 11 12export {get}

javascript

1// コンポーネント側 2 3export default { 4 data() { 5 return { 6 test: '' 7 } 8 }, 9 async created() { 10 this.test = await this.getApi() 11 console.log(this.getApi()) // promiseが返る 12 }, 13 methods: { 14 async getApi() { 15 return await this.$Api.get('https://api.myjson.com/bins/vqtjy') 16 // ここで 17 // .then(res => this.test = res.data) 18 // とすれば取得できるのは確認できている 19 } 20 } 21}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私が成功した例ご紹介しますね。
①Javasciript側はcallback関数で返してあげます。
②Vue側はmountedでデータをとってきてあげます。
(createdだとタイミングが早すぎるため描画されませんでした)

Javascript

1 2const axios = require('axios') 3 4export function get(callback){ 5 axios.get(url) 6 ,then(res =>{ 7 callback(res.data) 8 }) 9 .catch(err =>{ 10 callback(null) 11 }) 12}

Vue

1import {get} from '@/api.js' 2 3export default{ 4 data(){ 5 return{ 6 test: '' 7 } 8 }, 9 mounted(){ 10 this.getApi() 11 }, 12 methods:{ 13 getApi{ 14 get(data =>{ 15 this.test = data 16 }) 17 } 18 } 19}

投稿2020/02/12 07:24

oec

総合スコア271

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問