VueプロジェクトでReactを書く方法の詳細

VueプロジェクトでReactを書く方法の詳細

jsx/tsxファイルを直接作成できます

今回のプロジェクト構成は以下のとおりです。

vueファイルではこのように使います

// インデックス.vue
<テンプレート>
  <div class="wrapper">
    <共通:opt="リスト" />
  </div>
</テンプレート>
 
<script lang="ts">
「vue-property-decorator」から Component、Vue をインポートします。
「./components/Common」からCommonをインポートします。

@成分({
  名前:「アプリ」、
  コンポーネント:
    一般、
  },
})
デフォルトクラスAppをエクスポートし、Vueを拡張します。
  private list = ["Taobaoに行きたい"、"Baiduに行きたい"、"JDに行きたい"];
}
</スクリプト>

tsxはこう書いている

'vue' から CreateElement をインポートします。
'vue-property-decorator' から { Component, Vue, Prop } をインポートします。

@成分({
    名前: 'Common'
})
デフォルトのクラスCommonをエクスポートし、Vueを拡張します。
    @Prop(Object) オプション: 任意[]

    レンダリング(h: CreateElement) {
        戻る <span>
            {
                this.opt.map((it) => {
                    <span style="marginRight:10px">{it}</span> を返します
                })
            }
        </span>
    }
}

ページをご覧ください

CreateElementも参照していることに気付いた方もいるかもしれません。これは何のためでしょうか?これはレンダリング関数と呼ばれます。 vue に関するこのような長い文書を読むのが嫌いな人は、ここを読んでください。簡単な説明: これはvnodeノードをレンダリングできます。テンプレートよりもコンパイラに近いです。それはどういう意味ですか?つまり、テンプレート構文もレンダリング関数にコンパイルされます。したがって、レンダリング関数を直接使用すると、テンプレート構文からレンダリング関数までのプロセスを保存するのと同じになります。丸めプロジェクトのパフォーマンスがまた大きく向上しました!

パラメータ渡しの簡単な紹介:

最初のパラメーター: { String | Object | Function } HTML タグ名、コンポーネント オプション オブジェクト、または上記のいずれかにresolve非同期関数。必須フィールドです。

2 番目のパラメーター: Objectは、テンプレート内のattributeに対応するデータ オブジェクトです。

3 番目のパラメーター: { String | Array } テキスト ノードまたは子仮想ノード ( VNodes )。

レンダリング機能は Vue に多くの柔軟性をもたらします。以前は、子コンポーネントへの何かの挿入をカスタマイズしたい場合、多くの<slot>を記述する必要がありました。レンダリング機能を使えばこのように再生できます。

// 上記のindex.vueのデータを変換する

  プライベートリスト = [
    { render: () => ["a", { style: { color: "red" } }, "Taobaoに行きたい"] },
    { render: () => ["a", { style: { color: "green" } }, "JDに行きたいです。"] },
    { render: () => ["a", { style: { color: "pink" } }, "Baiduに行きたい"] },
  ];

これは tsx で書かれています:

  {
                this.opt.map((it) => {
                    h(...it.render()) を返します
                })
            }


派手なページをレンダリングできます。

次のように遊ぶこともできます:

// tsx 変換 <span>
            {
                this.opt.map((it) => {
                    it.render(h) を返します
                })
            }
</span>


index.vue ページでこれを実行できます。
// インデックス.vue
プライベートリスト = [
    {
      レンダリング: (h: CreateElement) =>
        h("a", { style: { color: "red", marginRight: "5px" } }, "Taobaoに行きたい"),
    },
    {
      レンダリング: (h: CreateElement) =>
        h("a", { style: { color: "green", marginRight: "5px" } }, "JDに行きたい"),
    },
    {
      レンダリング: (h: CreateElement) =>
        h("a", { style: { color: "pink", marginRight: "5px" } }, "Baiduに行きたい"),
    },
  ];

結果は同じファンシー

意味不明なラベルもレンダリングできます!

// index.vue 変換 {
      レンダリング: (h: CreateElement) =>
        h(
          "h1",
          {
            スタイル: { 色: "緑", 右余白: "5px" },
          },
          「JDに行きます。」
        )、
    },


レンダリング関数内でイベントを好きなように定義できます。

// インデックス.vue
プライベートリスト = [
   {
      レンダリング: (h: CreateElement) =>
        h(
          「あ」、
          {
            スタイル: { 色: "赤", 右余白: "5px" },
            の上: {
              クリック: () => this.iWillGoWhere("TB"),
            },
          },
          「タオバオに行きたい」
        )、
   }]
   
 iWillGoWhere(型: 文字列) {
    const goWhere: 任意 = {
      TB: () => {
        alert("Taobaoに行きます!");
      },
      JD: () => {
        alert("JDに行きます!");
      },
      BD: () => {
        alert("Baiduに行きたい!");
      },
    };
    goWhere[type]();
  }


それでおしまい!

これで、vue プロジェクトで react を書く方法についての記事は終わりです。vue プロジェクトで react を書く方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介
  • Vue3 Reactivityの実装方法を教えます
  • Vue3.0 における Ref と Reactive の違いの詳細な分析
  • Vue3 における ref と reactive の詳細な説明と拡張
  • vue3 の setUp とリアクティブ関数の使用方法の詳細な説明
  • Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法
  • React、Angular、Vueの3つの主要なフロントエンド技術の詳細説明
  • VueとReactの違いと利点
  • Vue と React の違いは何ですか?
  • VueとReactの詳細

<<:  MySQLの最適化の詳細な分析とパフォーマンス

>>:  Linux mysql-5.6 でルート パスワードをリセットする方法

推薦する

MySQL におけるデータベース間関連クエリメソッド

ビジネスシナリオ: 異なるデータベース内のテーブルをクエリするたとえば、関連付けられるテーブルは、マ...

DockerコンテナにPythonアプリケーションをデプロイするプロセスの分析

シンプルなアプリケーションの展開1. ディレクトリ構造: └── Pythonpro #ディレクトリ...

Dockerを使用してDjango+MySQL8開発環境をデプロイする方法の詳細な説明

しばらく前にシステムを再インストールしましたが、バックアップを取っていなかったので、コンピューター上...

bitronix を使用して MySQL に接続するときの MySQLSyntaxErrorException の解決方法

bitronix を使用して MySQL に接続するときの MySQLSyntaxErrorExce...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

Vueは物流タイムライン効果を実現します

この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...

MySQLデータベースのデータテーブルに関する詳細な基本操作

目次1. 現在のデータベース内のテーブルを表示する2. テーブルを作成する3. 指定されたテーブル構...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

CentOS 7.6 への MySQL 5.7 GA バージョンのインストール チュートリアル図

目次環境の準備環境の準備mariadbをアンインストールする rpm -qa | grep mari...

CSS はスクロールバーを非表示にしてコンテンツをスクロールする効果を実現します (3 つの方法)

フロントエンド開発では、スクロールバーを非表示にしながらスクロールをサポートしなければならないという...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...

JavaScript のカンマ式が含まれている場合について

JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...

優れたウェブワイヤーフレーム設計・制作ツール13選を紹介

プロジェクトの作業を開始するときは、ワイヤーフレームを使用してアイデアをスケッチすることが重要です。...

Javascript フロントエンド最適化コード

目次if判定の最適化1. 最も簡単な方法:判断2. より良い方法: スイッチ3. より良いアプローチ...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...