質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

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

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

2回答

1245閲覧

vue.js データから取得した値がObjectになる

cuku

総合スコア108

Vue.js

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

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2020/08/07 05:22

Vue.js,typescriptを使って開発をしています。

わからないこと
this.getShereCodeでデータから取得したデータをparamに入れて${env.BASE_URL}+?param=${param}で返してあげているのですが
console.log(param)で確認したところconst paramの中にはデータから取得した値が入っているのですがretun ${env.BASE_URL}+?param=${param}で返されたparamは[object Promise]というのになっていました。
どうやって直したらいいのでしょうか?
わかる人いましたらご教授お願いしたいです。

ShareUrl() { const param = this.getShareCode() console.log(param) return `${env.BASE_URL}+?param=${param}` } async getShareCode() { const res = await ShareURLData.getShareUrl(this.$axios) return res.share_code }

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

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

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

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

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

guest

回答2

0

paramは[object Promise]というのになっていました。

はい、async関数はPromiseを返す関数ですので、awaitなしで呼ぶとPromiseとなります。

どうやって直したらいいのでしょうか?

ShareUrl自体を同期的に処理しないといけないのであれば、手段はありません

投稿2020/08/07 05:38

maisumakun

総合スコア145184

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

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

cuku

2020/08/07 05:40

ご回答ありがとうございます。 手段がないということは直すことができないということでしょうか?
maisumakun

2020/08/07 05:42

ShareUrlを使う側から再検討が必要になる、ということです(提示されたコードの範囲内だけ書き直す形では解決できません)。
cuku

2020/08/07 05:50 編集

うーーん、、 やりたいことは retunで  `${env.BASE_URL}+?param=${param}`を返してあげる関数を作りたいだけなのですが結構難しいということですね、、
maisumakun

2020/08/07 05:52 編集

> 結構難しいということですね、、 はい、getShareCode()が非同期でしか値を返さないので、同期的にその結果を含む値を返すことはできません。 ShareUrl()自体をasyncに変えると、今度はそれを呼んでいる側に影響が出ます。
cuku

2020/08/07 05:54

直し方が全くわからないのですが、どういう方法があるのでしょうか?
maisumakun

2020/08/07 05:55

まずは、ShareUrl()自体がどのように使われているのかを調べるのが先決です。
cuku

2020/08/07 05:57

<share-buttons :share-url="getShareUrl()" /> 上記のとこで使われておりshere-bottonsコンポーネントにretunで返された値を渡しています
maisumakun

2020/08/07 06:02

となると、そこにasync関数は使えませんので、Vueインスタンスのデータとして持たせるように改装する必要があるかと思います。
cuku

2020/08/07 06:16

インスタンスのデータ?? storeを使うということでしょうか?
guest

0

${env.BASE_URL}+?param=${param} で文字列にしているからではないでしょうか?

URLを返したいなら${env.BASE_URL}?hoge=1&foo=2 のような形式にする必要があります

投稿2020/08/07 05:34

komasan1

総合スコア257

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

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

cuku

2020/08/07 05:35

paramは文字列にできないですよね?
komasan1

2020/08/07 05:40

``` async ShareUrl() { const param = await this.getShareCode() console.log(param) return `${env.BASE_URL}+?param=${JSON.stringify(param)}` } ``` これでどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問