React NativeのScrollViewプルダウンリフレッシュ効果

React NativeのScrollViewプルダウンリフレッシュ効果

この記事では、React Native ScrollViewのプルダウンリフレッシュ効果の具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

ScrollView の refreshControl プロパティはプルダウンの更新に使用され、垂直ビューでのみ使用できます。つまり、horizo​​ntal は true にできません。

1. カスタムCKRefresh.jsリフレッシュコンポーネントを作成する

'react' から React,{Component} をインポートします。
輸入 {
    ビュー、
    文章、
    スタイルシート、
    スクロールビュー、
    リフレッシュコントロール、
    寸法
} から 'react-native';

const screenW=Dimensions.get('window').width;

デフォルトクラスCKRefreshはComponentを拡張します{
    コンストラクタ(){
        素晴らしい();
        this.state={
            rowDataArr:Array.from(新しいArray(30)).map((値,インデックス)=>({
                タイトル:「データの初期化」+インデックス
            }))、
            //読み込みを表示するかどうか
            リフレッシュ中:false、
            読み込まれました:0
        }
    }

    与える(){
        const rowsArr=this.state.rowDataArr.map((row,index)=>(<行データ={row} キー={index}/>))
        戻る(
            <スクロールビュー
                リフレッシュコントロール={
                    <リフレッシュコントロール
                        リフレッシュ中 =​​ {this.state.isRefreshing}
                        onRefresh={()=>this._onRefresh()}
                        colors={['赤','緑','青']}
                        title="読み込み中..."
                    />
                }
            >
                {行数}
            </スクロールビュー>
        )
    }

    _onRefresh(){
        //1. インジケーターを表示する this.setState({
            リフレッシュ中:true
        });
        //2. データの読み込みをシミュレートする setTimeout(()=>{
            newDataArr=Array.from(new Array(5)).map((value,index)=>({
                title:「私はプルダウンされたデータです」+(this.state.loaded+index)
            })).concat(this.state.rowDataArr);
            //ステートマシンを更新 this.setState({
                行データ配列:新しいデータ配列、
                リフレッシュ中:false、
                ロード済み: this.state.loaded+5
            });
        },2000);
    }
}

クラス Row は Component を拡張します {
    静的デフォルトプロパティ = {
        データ:{}
    };
    与える(){
        戻る(
            <表示スタイル={{
                幅:画面W、
                高さ:40,
                ボーダー下幅:1,
                borderBottomColor:'赤',
                コンテンツを中央揃えにする:'center'
            }}>
                <テキスト>{this.props.data.title}</テキスト>
            </表示>
        )
    }
}

const スタイル = StyleSheet.create({

})

2. App.js での参照

/**
 * サンプルReact Nativeアプリ
 * https://github.com/facebook/react-native
 *
 * @フォーマット
 * @flow 厳密なローカル
 */

'react' から React をインポートします。
輸入 {
  セーフエリアビュー、
  スタイルシート、
  スクロールビュー、
  ビュー、
  文章、
  ステータスバー、
} から 'react-native';

輸入 {
  ヘッダ、
  詳細情報リンク、
  色、
  デバッグ手順、
  再ロード手順、
} 'react-native/Libraries/NewAppScreen' から;

'./components/CKRefresh' から CKRefresh をインポートします。
const アプリ: () => React$Node = () => {

  戻る (
    <>
      <ステータスバー barStyle="dark-content" />
      <セーフエリアビュー スタイル = {styles.mainViewStyle}>
      <CKリフレッシュ/>
      </セーフエリアビュー>
    </>
  );
};


const スタイル = StyleSheet.create({
  メインビュースタイル:{
      フレックス:1,
      背景色:'#fff',
  }
});



デフォルトのアプリをエクスポートします。

3. 結果は図の通りです

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • FlatList プルダウン リフレッシュ プルアップ ロードに基づく React Native コード例
  • React Native ListView に、上部のプルダウン更新と下部のクリック更新の例が追加されました
  • React Native カスタム プルダウン リフレッシュ プルアップ ロード済みリストの例
  • React Native での RefreshContorl プルダウン リフレッシュの使用
  • React ネイティブの ListView をプルダウンして更新し、プルアップして実装コードを読み込む
  • Reactはネイティブのプルダウンリフレッシュを実装

<<:  MySQL インデックスのクイックガイド

>>:  Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

推薦する

React Nativeでシンプルなゲームエンジンを作る

目次導入始めるReact Nativeゲームエンジンの簡単な紹介React Nativeでスネークゲ...

CentOS 6.8 での Hadoop 3.1.1 完全分散インストール ガイド (推奨)

上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...

Linux で 1 回限りのスケジュールされたタスクを実行するための at コマンドの使用に関する詳細な説明

目次序文1. 一度限りの計画タスクの紹介2. コマンド3. 1回限りのスケジュールタスクを作成する4...

モバイルデバイス上の 1px 境界線を解決する最善の方法 (推奨)

モバイル デバイス向けに開発する場合、Retina 画面上で要素の境界線が太くなるという問題に遭遇す...

Linux システムで Tomcat を自動的に起動するための設定方法の紹介

1. /etc/init.d ディレクトリに入ります: cd /etc/init.d 2. tomc...

Windows 10 での Tomcat のインストールと展開に関する詳細なチュートリアル

目次1 Java環境の設定2 tomcatのインストールと展開Tomcat をインストールして展開す...

設計仕様に準拠した設計は良い設計でしょうか?

これまでの数年間、私はいわゆる「設計仕様」についてかなりの数の執筆やコンサルティングを行ってきました...

Javascript における分割代入構文の詳細な説明

序文ES6 で初めて導入された「構造化代入構文」を使用すると、配列やオブジェクトの値を異なる変数に挿...

MySQLデータベース最適化技術の簡単な紹介

成熟したデータベース アーキテクチャは、最初から高可用性、高スケーラビリティなどの機能を備えて設計さ...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...

Linux で一般的なソフトウェアを設定する方法

新しいLinuxサーバーを入手する場合、通常は次の5つの構成を実行する必要があります。 HOSTAN...

VMware WorkStation 14 pro インストール Ubuntu 17.04 チュートリアル

この記事では、VMware Workstation14 ProにUBuntu17.04をインストール...

MySQLで時間別データと最後の時間別データの差をクエリするアイデアの詳細な説明

1. はじめに要件は、特定の時間範囲内で、1 時間ごとのデータと前の 1 時間ごとのデータの差と比率...

Vueは開始時間と終了時間の範囲クエリを実装します

この記事では、Vueで開始時間と終了時間の範囲を照会する方法を参考までに紹介します。具体的な内容は次...

Vueはドラッグアンドドロップを使用して構造ツリーを作成します

この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...