JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

React Nativeでローディングインジケーターを表示する方法|ActivityIndicatorの使い方を解説

ローディングインジケーターは、ユーザーがUI上で行ったリクエストに時間がかかることを伝えるための重要なUI要素です。たとえば、フォーム入力後の送信ボタンをクリックしたときや、検索ボタンを押してデータを取得する際などに表示することで、アプリが動作中であることをユーザーに明確に示せます。

React Nativeでは、標準搭載されているActivityIndicatorコンポーネントを使うだけで、簡単にローディングインジケーターを実装できます。

ActivityIndicatorの基本形

ActivityIndicatorの基本的な記述方法は以下のとおりです。

<ActivityIndicator animating={animating} color="#bc2b78" size="large" style={yourStyle} />

ActivityIndicatorを使用するには、react-nativeからインポートします。

import { ActivityIndicator } from 'react-native';

ActivityIndicatorの主なプロパティ

No.プロパティと説明
1animating
アニメーションの表示・非表示を制御します。trueでインジケーターを表示し、falseで非表示にします。
2color
スピナーの色を指定します。
3hidesWhenStopped
trueの場合、アニメーションが停止すると同時にインジケーターを非表示にします(iOS専用プロパティ)。
4size
インジケーターのサイズを指定します。「small」「large」のほか、Androidでは数値による指定も可能です。

実装例:ローディングインジケーターの表示

まず、必要なコンポーネントをインポートします。

import { ActivityIndicator, View, StyleSheet } from 'react-native';

次に、ActivityIndicatorコンポーネントを配置します。

<ActivityIndicator
    animating={animating}
    color="#bc2b78"
    size="large"
    style={styles.activityIndicator} />

animatingにはstate変数を渡しており、初期値はtrueです。componentDidMount()内でcloseActivityIndicatorメソッドを呼び出し、60秒(60000ミリ秒)後にanimatingfalseに切り替えることで、一定時間後にインジケーターが非表示になる仕組みです。

state = { animating: true }
closeActivityIndicator = () => setTimeout(() => this.setState({
    animating: false }), 60000)
componentDidMount = () => this.closeActivityIndicator()

完全なサンプルコード(クラスコンポーネント)

import React, { Component } from 'react';
import { ActivityIndicator, View, StyleSheet } from 'react-native';

class ActivityIndicatorExample extends Component {
    state = { animating: true }

    closeActivityIndicator = () => setTimeout(() => this.setState({
        animating: false }), 60000)

    componentDidMount = () => this.closeActivityIndicator()

    render() {
        const animating = this.state.animating;
        return (
            <View style={styles.container}>
                <ActivityIndicator
                    animating={animating}
                    color="#bc2b78"
                    size="large"
                    style={styles.activityIndicator} />
            </View>
        );
    }
}

export default ActivityIndicatorExample;

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        marginTop: 70
    },
    activityIndicator: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        height: 80
    }
});

関数コンポーネント+フックでの実装例

近年のReact Native開発では、関数コンポーネントとHooksを使った書き方が主流です。同じ挙動をuseStateuseEffectで実装すると、より簡潔になります。

import React, { useState, useEffect } from 'react';
import { ActivityIndicator, View, StyleSheet } from 'react-native';

const ActivityIndicatorExample = () => {
    const [animating, setAnimating] = useState(true);

    useEffect(() => {
        const timer = setTimeout(() => setAnimating(false), 60000);
        return () => clearTimeout(timer); // クリーンアップでタイマーを解除
    }, []);

    return (
        <View style={styles.container}>
            <ActivityIndicator
                animating={animating}
                color="#bc2b78"
                size="large"
                style={styles.activityIndicator} />
        </View>
    );
};

export default ActivityIndicatorExample;

実際のアプリ開発では、APIリクエスト開始時にsetAnimating(true)、完了時にsetAnimating(false)を呼び出すことで、通信中のローディング表示として活用できます。

実行結果

React Nativeでローディングインジケーターを表示する方法|ActivityIndicatorの使い方を解説

  1. React Navigation 5 を使って React Native のナビゲーションを処理する方法

    React Nativeでナビゲーションを扱うときに真っ先に思い浮かぶライブラリといえば、React Navigationです。 筆者はこのライブラリの大ファンで、React Nativeのナビゲーション処理には常に最初の選択肢として採用しています。その理由の一つは、優れていて使いやすいAPIを備え、カスタマイズ性も非常に高いからです。 この記事を書くにあたったきっかけは、バージョン5がベータ版から安定版へと移行したことです。バージョン5にはいくつかの機能変更が加わり、ルートの宣言方法がシンプルかつ新しい設計のAPIへと生まれ変わりました。 本記事では、新しいAPIの概要と、アプリケーションで

  2. React Nativeで動画を背景に使う方法をわかりやすく解説

    この記事では、React Nativeで背景動画(backgroundVideo)を作成する方法を解説します。React Nativeを始めたばかりの方は、まず「React Nativeでモバイルアプリ開発を始めるために知っておくべきこと」といった入門記事を読んでおくと理解がスムーズになります。背景動画はアプリのUIに洗練された印象を与える演出手段です。広告の表示やユーザーへのメッセージ伝達など、さまざまな用途に活用できます。今回はPeletonアプリのホーム画面のようなデザインを目標に、実装方法を見ていきましょう。前提条件実装を始める前に、以下の環境が整っている必要があります。react-n