Reactの二次連携を実現する方法

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

実施効果:普通のh5ページ。写真をトリミングし、ユーザー部分を削除しましたが、説明には影響しません。

一般的な考え方は、ページからコンポーネントにデータ インターフェイスを渡すことです。コンポーネントでインタラクションが実行されると、選択されたデータ結果が onTimeChange を通じてページに返され、ページに表示されます。
Taroで書きましたが、構文はreactと同じです。

ミニプログラム効果

かなり昔の方法ですが、実装コードを紹介します。

1. ページ上に時間を選択するためのポップアップウィンドウモジュールがあります

 {this.state.isToggleOn && (
    <パネル
        onTimeChange={this.onTimeChange}
        onClick={this.closeMask}
        list={this.state.timeList} //インターフェースデータ status={this.state.status} //現在の製品ステータス(オプション)/>
   )}

2. ポップアップウィンドウで

"@tarojs/taro" から { コンポーネント } をインポートします。
"@tarojs/components" から View、Text をインポートします。
SendTime を "../time" からインポートします。
「./index.scss」をインポートします。

デフォルトのクラス Panel をエクスポートし、Component を拡張します {
  コンストラクタ(props) {
    スーパー(小道具);
  }

  静的デフォルトプロパティ = {
    リスト: [],
    状態: ""
  };

  クリック() {
    this.properties を onClick() します。
  }

  onTimeChange(日付、時刻) {
    this.props.onTimeChange(日付、時刻);
  }

  与える() {
    戻る (
      <View className="panel-modal">
        <送信時間
          リスト={this.props.list}
          onClick={this.onClick}
          onTimeChange={this.onTimeChange}
          ステータス = {this.props.status}
        />
      </表示>
    );
  }
}

3. 時間要素

"@tarojs/taro" から { コンポーネント } をインポートします。
"@tarojs/components" から View、Text をインポートします。
「../../image」から imageList をインポートします。
「./index.scss」をインポートします。

dateNum = 0 とします。
  時間数 = 0;
エクスポートデフォルトクラス SendTime は Component を拡張します {
  コンストラクタ(props) {
    スーパー(小道具);

    この状態 = {
      日付番号: 日付番号、
      時間番号: 時間番号、
      タイムリスト: [],
    };
  }

  静的デフォルトプロパティ = {
    リスト: [],
  };

  クリック() {
    this.properties を onClick() します。
  }

  switchDay(インデックス、情報) {
    this.setState({
      dateNum: インデックス、
    });
    dateNum = インデックス;
    this.switchTime(timeNum);
    date = info ? info.date : "" とします。
    time = info && info.timeSegementList ? info.timeSegementList[0] : "" とします。
    this.setState({
      タイムリスト: info.timeSegmentList、
    });
    this.onTimeChange(日付、時刻);
  }

  スイッチタイム(インデックス) {
    dateNum = this.state.dateNum; とします。
    this.setState({
      timeNum: インデックス、
    });
    timeNum = インデックス;
    date = this.props.list[dateNum] ? this.props.list[dateNum].date : ""; とします。
    time = this.props.list[dateNum]とします。
      ? this.props.list[日付番号].timeSegementList[インデックス]
      : "";
    (インデックス!= 0)の場合{
      this.onTimeChange(日付、時刻);
    }
  }

  onTimeChange(日付、時刻) {
    this.props.onTimeChange(日付、時刻);
  }

  コンポーネントマウント() {
    this.setState({
      timeList: ["グループが形成された直後に出荷"],
    });
  }

  コンポーネントマウント() {
    if (this.props.status) {
      this.switchDay(dateNum, this.props.list[dateNum]);
    } それ以外 {
      (日付番号 = 0)、(時刻番号 = 0);
      this.setState() は、
        {
          データ番号: 0,
          時間番号: 0,
        },
        () => {
          this.switchDay(0, this.props.list[0]);
        }
      );
    }
  }

  getClassName(インデックス) {
    スイッチ (インデックス) {
      ケース this.state.dateNum:
        「send-data-li current」を返します。
      デフォルト:
        「send-data-li」を返します。
    }
  }

  与える() {
    戻る (
      <表示>
        <View className="send-time-title" onClick={this.onClick}>
          <Text>配達時間</Text>
          <View className="close" />
        </表示>
        <View className="send-time-cont">
          <View className="送信日リスト">
            {this.props.list.map((情報、インデックス) => (
              <表示
                キー={インデックス}
                クラス名={
                  インデックス === this.state.dateNum
                    ? "送信データ-li 現在の"
                    : 「送信データli」
                }
                onClick={this.switchDay.bind(this, index, info)}
              >
                <Text className="txt">{info ? info.date : ""}</Text>
              </表示>
            ))}
          </表示>
          <View className="send-r-time">
            {this.state.timeList.map((情報、インデックス) => (
              <表示
                キー={インデックス}
                クラス名={
                  インデックス === this.state.timeNum
                    ?「send-r-li current」
                    : 「send-r-li」
                }
                onClick={this.switchTime.bind(this, インデックス)}
              >
                <View class="send-r-flex">
                  <Text class="txt">{情報}</Text>
                  <画像
                    className="blue-ok"
                    src={imageList.blueOk}
                    モード={"アスペクトフィット"}
                    遅延読み込み={true}
                  />
                </表示>
              </表示>
            ))}
          </表示>
        </表示>
      </表示>
    );
  }
}

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

以下もご興味があるかもしれません:
  • Reactは二次連結(左右連結)を実現する
  • Reactは二次的連鎖効果(階段効果)を実現する
  • React+tsは二次リンク効果を実現します

<<:  MySQL監視ツールmysql-monitorの詳細な説明

>>:  Linux rpm および yum コマンドとその使用法の詳細な説明

推薦する

Zabbixで指定時間内の変化値を設定する方法の詳細な説明

背景説明: 既存の負荷分散装置には、付加価値状態にある指標があります (増加するだけで減少しないため...

Antdesign-vueとsortablejsを組み合わせて、2つのテーブルをドラッグして並べ替える機能を実現

目次成果を達成するsortablejs の紹介具体的な実装成果を達成する最初は、antdesign ...

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...

Vueが初めて要素を取得できなかったときの解決記録

序文Vue で要素を初回取得できない問題の解決方法は、ポップアップ ウィンドウで要素を取得するために...

フロントエンドタスク構築のための強力なツールであるGulp.jsの使い方を詳しく説明します

目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...

CSS3を使用してオンラインライブ放送に似たキューアニメーションを実装する方法

以前、グループの友人が質問しました。つまり、ミニプログラムでユーザーがオンラインになったときに、ライ...

JS ES6における構造化分解についてお話しましょう

概要es6 では、配列またはオブジェクトから指定された要素を取得する新しい方法が追加されました。これ...

xHTML タグと HTML タグの違いは何ですか?

すべてのタグは小文字でなければなりませんXHTML では、すべてのタグは小文字でなければなりません。...

2019 年に最も役立ち重要なオープンソース ツール トップ 10

Black Duck の 2017 年のオープンソース調査では、回答者の 77% がオープンソース...

XHTML ブロックレベルタグの概要

* 住所 - 住所* blockquote - ブロック引用* center - 中央揃えブロック*...

MySQL スケジュールされたデータベース バックアップ操作の例

この記事では、MySQL のスケジュールされたデータベース バックアップ操作の例について説明します。...

CentOS8でのnmcliの使い方の詳しい説明

RHEL8/CentOS8 に基づく一般的な nmcli コマンド # IP を表示する (ifco...

Mysqlサーバーのインストール、構成、起動、シャットダウン方法の詳細な説明

1. 公式サイトからダウンロード: https://dev.mysql.com/downloads/...

Linux のファイル権限とグループ変更コマンドの詳細な説明

Linux では、すべてがファイルであり (ディレクトリもファイルです)、各ファイルにはユーザーに対...

CentOS 6.9 で glibc ダイナミック ライブラリをアップグレードする詳細なプロセス

glibc は、gnu によってリリースされた libc ライブラリ、つまり c ランタイム ライブ...