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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

685閲覧

[React]googleカレンダーとの連携においてlistUpcommingEventが複数回実行される

aiai8976

総合スコア112

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/06/23 01:17

編集2020/06/23 02:05

前提・実現したいこと

gapiを使ってgoogleカレンダーとの連携を考えています。
その際に、サンプルプログラムがclassコンポーネントだったため、funcitionコンポーネントに書き換えました。
この時、「event nothing」がコンマ何秒おきに出力されてしまいます。
読み込み時に一回だけ処理が走るようにしたいです。
classコンポーネントの時には一回だけだったのですが、functionコンポーネントに書き換えるとこのようになりました。
原因がわかる方がいましたらコメントお願いします。

google calendar api 公式ドキュメント
https://developers.google.com/calendar/quickstart/js

発生している問題・エラーメッセージ

event nothingがコンマ何秒おきに出力される

該当のソースコード

変更前

componentDidMount() { window.gapi.load("client:auth2", () => { window.gapi.client .init({ apiKey: "", clientId: "", scope: "", discoveryDocs: [""], }) .then(() => { const auth = window.gapi.auth2.getAuthInstance(); this.setState({ isSignedIn: auth.isSignedIn.get() }); this.listUpcomingEvents(); }); }); }

変更後

sample

1const listUpcomingEvents = () => { 2 window.gapi.client.calendar.events 3 .list({ 4 calendarId: "primary", 5 timeMin: new Date().toISOString(), 6 showDeleted: false, 7 singleEvents: true, 8 maxResults: 10, 9 orderBy: "startTime", 10 }) 11 .then((response) => { 12 const events = response.result.items; 13 14 // 省略 15 } else { 16 console.log("event nothing"); //該当箇所 17 } 18 }); 19 }; 20 21 useEffect(() => { 22 window.gapi.load("client:auth2", () => { 23 window.gapi.client 24 .init({ 25 apiKey: "", 26 clientId: "", 27 scope: "", 28 discoveryDocs: [""], 29 }) 30 .then(() => { 31 const auth = window.gapi.auth2.getAuthInstance(); 32 33 setIsSignedIn({ isSignedIn: auth.isSignedIn.get() }); 34 listUpcomingEvents(); //該当箇所 35 }); 36 }); 37 });

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問