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 を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

推薦する

MySQL 権限制御の詳細分析

目次1. グローバルレベル2. データベースレベル3. 表面レベル4. 列レベルの権限5. サブルー...

MySQL の general_log ログの知識ポイントの紹介

以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。仕事...

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

Win10 での MySQL 8.0.16 のインストールと設定のチュートリアル

1. MySQL 8.0.16を解凍する次の図に示すように、解凍後にdadaフォルダとmy.ini構...

MySQLへのJava接続の基礎となるカプセル化の詳細な説明

この記事では、Java接続MySQLの基礎となるカプセル化コードを参考までに紹介します。具体的な内容...

CSS 属性値 clear:right が機能しない理由の詳細

clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...

CSS スタイルを HTML 外部スタイルシートにインポートする方法

リンクインスタイルとは、すべてのスタイルを 1 つ以上の外部スタイルシート ファイルに配置することで...

Linuxは数字当てゲームのソースコードを実装する

シンプルな Linux 推測ゲームのソースコードゲームのルール:数字当てゲームは通常 2 人でプレイ...

CentOS7仮想マシンで固定IPアドレスを設定する方法

私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...

リンクAの意味論、書き方、ベストプラクティス

リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...

MySQLイベント計画タスクに関する簡単な説明

1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...

実用的なウェブオンラインツール12選

1.ファビコン.cc ico アイコンの Web サイトをオンラインで作成するには、画像をアップロー...

MySQL 5.7.21 のインストールと設定方法のグラフィックチュートリアル (ウィンドウ)

ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

Web でよく使われるフォントの紹介 (iOS および Android ブラウザでサポートされているフォント)

年末なので仕事も少なくなっています。私が何もせずにいるのを見ると、上司はきっと不快に思うでしょう。そ...