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データベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

CSS3 rgb と rgba (透明色) の使い方の詳しい説明

誰もが色にとても敏感だと思います。私たちの目が見るところにはどこにでも色があります。では、CSS で...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...

2013年のウェブデザインUIの最もホットなトレンド最も人気のあるUIデザイン

時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...

Dockerfile を使用して Docker イメージをカスタマイズする方法

Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...

docker のインストールが完了し、bridge-nf-call-iptables が無効であると報告される問題を解決します

Centos マシンで docker のインストールが完了したら、docker info コマンドを...

CentOS のファイルと権限の基本操作チュートリアル

序文始める前に、ファイル属性とファイル属性を変更する方法について簡単に理解しておく必要があります。 ...

Docker に MySQL と Redis をインストールする方法

この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...

webpack -v エラー解決

背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現するためにCSSを使用する

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現する...

Vue 円形パーセンテージ プログレスバー コンポーネントの機能の実装

必要な方はどなたでも参考にしてください。試してみて問題が見つかった場合は、メッセージを残してお知らせ...

Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)

目次1. 監視Linuxホストを追加する2. メールボックスを設定する1. 監視Linuxホストを追...

Docker プルタイムアウトの解決策

最近、Docker イメージのプルが非常に不安定です。遅く、タイムアウトすることがよくあります。 x...