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をインストールする詳細な手順

推薦する

Webpack で環境変数を使用するためのさまざまな正しい姿勢

目次前に書いてビジネスコードは環境変数を使用するwebpack.DefinePlugin プラグイン...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...

Linux 基本チュートリアル: 特別な権限 SUID、SGID、SBIT

序文Linux のファイルまたはディレクトリの権限については、共通の rwx 権限を知っておく必要が...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

Mac M1 での Nginx のマルチサイト構成の実装

注: nginxはbrew経由でインストールされますウェブサイトのルートディレクトリ: /opt/h...

Docker で MySQL 接続と設定ファイルの最大数を変更する

1. MySQLイメージを見つける ドッカーps 2. ミラーmysqlイメージを入力する dock...

MySQL 8.0.16 winx64 のインストールと設定方法のグラフィックチュートリアル

最近、データベースについて学び始めました。最初にやったことは、データベースとは何か、データベースとデ...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

HTML ユーザー登録ページ設定ソースコード

上記の Web ページをデザインします。 <!DOCTYPE html> <htm...

MySQLで日付を比較する方法の詳細な説明

データ型が datetime であるフィールド add_time を持つテーブル product が...

div間のギャップの解決策

HTMLのdivブロックを使用していて、ブロックの中央をしっかりと接続できず、解決できない場合1. ...

CSS フレックスベースのテキストオーバーフロー問題の解決方法

重要でないflex-basisテキストオーバーフローに省略記号を追加するという小さな機能に多くの問題...

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...