React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

フロントエンド

まず、フロントエンドReactのテーブル内の属性ページネーションに慣れる必要があります。

<ページネーション onChange={onChange} total={50} />

<テーブル境界 columns={columns} rowKey={record => record.id} dataSource={dataSource}
       ページネーション={ページネーション}/>

このうち、ページネーションは私たちが独自に実装した機能です。Reactでは静的なサンプルしか提供されていないため、Reactのドキュメントを確認してください。提供されている例は次のとおりです。

関数のパラメータはcurrentとpageSizeであることを思い出させます
次に、ドキュメントの指示に従って、現在のページとページあたりの最大データ量を関数に渡すことができるかどうかを検討します。

上記のアイデアに従って、ページめくり機能を設計して記述します。

const ページネーション = {
    表示QuickJumper:true,
    表示サイズチェンジャー:[],
    合計: this.example.total,
    デフォルトCurrent: this.example.page、
    現在のページ: this.example.page、
    ページサイズ: this.example.pageSize、
    hasNextPage: this.example.hasNextPage、
    onShowSizeChange: (現在のサイズ) => {
         // ページあたりの最大データ量 self.example.pageSize = size;
        //現在のページ self.example.page = current;
        // 2つのパラメータをテンプルにカプセル化します let temple = {
            ページ: self.example.page,
            ページサイズ: self.example.pageSize
        };
        // 最後に、関数を再リクエストし、現在のページと各ページの最大データ量を再リクエスト パラメータに渡します。self.onFetch(temple);
    },
    onChange(現在のページサイズ) {
        ページサイズをページサイズに変換します。
        現在のページ
        
        寺院 = {
            ページ: self.data.search.page、
            ページサイズ: self.data.search.pageSize、
        };
        self.onFetch(テンプル);
    }
};

この時点で、ページャのフロントエンド関数を実装したので、ページネーションをテーブルのページネーションに渡すことができます。

バックエンド(Javaを例に挙げる)

まずSQLを書く必要があります

stu 制限 ${(page - 1)*(pageSize)}、${pageSize + 1} から ID を選択

SQLを解釈すると、pageSizeが1増加する理由を尋ねる人もいるかもしれない。
例えば

countSizeは201、pageSizeは20なので直接割ると結果は10になるが、実際は11必要である。

mybatis-helperを使用するか、バックエンドでPageListをカプセル化することができます。
最後に、データベースから取得したデータを PageList に格納し、フロントエンドに返すことができます。フロントエンドは、バックエンドから渡されたデータの合計数 (total) と最大ページ数 (pageSize) を受け取ります。

SQLパラメータの受け渡しの問題について

私たちが書くとき

選択
 id
から
 スチュ
制限 1,10

見つかったデータは218 222 220 217 219 221 8 9 10 12です
1を2に変更すると、222 220 217 219 221 8 9 10 12 14というデータが得られます。
これがSQLで(page - 1)*(pageSize)と書く理由です。
なぜなら、limit が 10, 10 として渡されると、データを更新できるからです。そうでない場合、フロントエンドが page=2 を渡すと、バックエンドで 1 つのデータのみが更新され、pageSize-1 に相当するデータがオーバーラップされます。

知らせ

SQL を (page-1) として記述する場合、フロントエンドのデフォルトのページ値は 1 から始まる必要があります。そうでない場合、0 が渡されると負の数が表示され、バックエンドでエラーが発生します。

制限を最適化する方法の詳細については、私の別の記事「MySQL Select最適化の詳細な研究」を参照してください。

React ページ ターナーの実装 (フロントエンドとバックエンドを含む) に関するこの記事はこれで終わりです。React ページ ターナーに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • react.js ページフリッププラグインのサンプルコード

<<:  Linux md5sumコマンドの使い方

>>:  Winにmysqlをインストールする詳細な手順

推薦する

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...

建国記念日が近づいています。JS を使用して、建国記念日風のアバターを生成する小さなツールを実装します。実装プロセスの詳細な説明

目次1. ページレイアウト2. 画像のアップロードと表示3. キャンバスを初期化する4. テンプレー...

MySQL Community Server 5.7.16 のグリーン バージョンをインストールしてリモート ログインを実装する方法

1. MySQL Community Server 5.7.16をダウンロードしてインストールします...

デザインにおけるユーザーエクスペリエンスの背後にある8つのユーザー本能について話す

編集者注: この記事は、Teambition チームの @娄昊川 が寄稿したものです。Teambit...

MySQLテーブル内の重複データをクエリする方法

hk_test(ユーザー名、パスワード) に値を挿入 ('qmf1', '...

複数のパッケージソースから同時にパッケージをロードするようにnpmを設定する方法

目次1. ローカルストレージを構築する2. npmパッケージを作成し、プライベートリポジトリにアップ...

Ubuntu 16.04 mysql5.7.17 リモートポート 3306 を開く

MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

Oracle の開閉の 4 つのモード

>1 データベースを起動するcmd コマンド ウィンドウで、「sqlplus」を直接入力して ...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

mysql 行列変換サンプルコード

1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...

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

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

MySQL テーブル フィールドの時間設定のデフォルト値

アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...