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

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

新規登録して質問してみよう
ただいま回答率
85.35%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

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

Q&A

解決済

1回答

923閲覧

フック useEffect

abcdmmefg

総合スコア7

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

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

0グッド

0クリップ

投稿2020/04/11 02:17

編集2020/04/11 02:20

私は今、音楽アプリを React Native を用いて作成しています。聞きたいことは、hookについてなのでタグにはReactも入れました。

音楽アプリなので再生中の状態を、再生画面に描画(Play、Stopボタンなどのデザイン、次の曲に変化したetc)、途中で再生中の状態が変わったら、自動でデザインを変更できるようにしたいと考えています。

現状、再生中の状態はある関数を用いて、"その瞬間"の状態を得ることができます。戻り値はObjectです。

useEffect は依存配列が変化するたびに、中身が実行され、stateなどの値をsetすることができます。また、依存配列の指定の仕方によっては無限ループを引き起こしたりできます。

そこで私は、常に再生中の状態を管理したいので、useEffectを無限ループさせ、その中で音楽の再生中の状態を得ようかと考えました。しかしuseEffectを無限ループさせるのには抵抗があります。そこで依存配列に再生中の状態をいれることで、stateを用いてデザインを変更すればいいと思いましたが、その"再生中の状態を得る関数"をどこで実行すればよいのかわからなくなりました。再生画面はcomponent化しているので、上の階層から値を持ってくればよいのですが、上の階層においても常に再生中の状態を得るにはuseEffectなどを用いて関数を無限に実行し続ける必要があり、問題が無限ループすることになります。

もし再生中の状態を常に得るならば、useEffect等を用いて無限ループする必要があるのでしょうか?
それとも再生中の状態を常に得るという考えが間違いであり、再生中の状態が変化した(曲名など)時にeventを発火させるようにするのが良いのでしょうか?
useEffectの無限ループをしたときのメモリ消費の話などもして頂けると嬉しいです。

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

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

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

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

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

guest

回答1

0

自己解決

使っていたmoduleの中に,再生中の状態が変わるとeventが変わるhooksがいくつか定義されていました.それを使いました.
またその中の定義を見るとuseEffectが使用されており,自分の考えはあながち間違いではなさそうでした.
意外とmoduleの中身って単純なんだなと思いました.これからはmoduleの中のコードを読んだり,アレンジしていきたいと思います.もちろんLicenseには気を付けます.以上.

投稿2020/04/11 03:47

abcdmmefg

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問