目次
クラスのクラス名をバインドするには、テンプレートを使用する 2 つの方法があります。文字列または配列を使用します。
主な機能は、ルーティング情報に基づいてメニューを自動的に生成することです。
ホームページ ウェブフロントエンド Vue.js vue3 での jsx/tsx のエレガントな使用法について話しましょう

vue3 での jsx/tsx のエレガントな使用法について話しましょう

Oct 08, 2022 pm 06:07 PM
vue vue.js vue3

vue で jsx/tsx をエレガントに使用するにはどうすればよいですか?次の記事では、vue3 での jsx/tsx のエレガントな使い方を紹介します。

vue3 での jsx/tsx のエレガントな使用法について話しましょう

react パートナーは全員 jsx/tsx に精通していると思いますが、現在は vue3## を使用しています。 #jsx/tsx 構文を使用することもできます。 [関連する推奨事項: vuejs ビデオ チュートリアル ]

プラグインをインストールします (@vitejs/plugin-vue-jsx)

vite公式は、vue3 での jsx/tsx の使用をサポートする公式プラグインを提供しています。直接インストールするだけです。

yarn add @vitejs/plugin-vue-jsx -D
ログイン後にコピー
インストール後、

vite.config.ts

import vueJsx from "@vitejs/plugin-vue-jsx";

export default defineConfig({
  plugins: [
    vueJsx(),
  ]
})
ログイン後にコピー
にコードを挿入します。設定後は、プロジェクト

jsx/tsx##で使用できます。 # La

1. 補間

jsx/tsx の補間は、vue テンプレート構文の補間と同じであり、次のような有効な Javascript 式をサポートします。 ##a b

,

a || 5...jsx/tsx では二重中括弧 {{}}

{}

// vue3模板语法
<span>{{ a + b }}</span>

// jsx/tsx
<span>{ a + b }</span>
ログイン後にコピー
2. クラスとスタイルのバインド

クラスのクラス名をバインドするには、テンプレートを使用する 2 つの方法があります。文字列または配列を使用します。

テンプレート文字列を使用して 2 つのクラス名をスペースで区切ります

    // 模板字符串
    <div>header</div>
    //数组
    <div>header</div>
    ログイン後にコピー
  • スタイル バインディングでは二重中括弧を使用する必要があります
  • const color = 'red'
    const element = <sapn>style</sapn>
    ログイン後にコピー

    3。条件付きレンダリング

    v-show
      命令のみがjsx/tsxに保持されますが、
    • v-if命令はありません if/else
    • と三項式を使用すると、
    • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">   setup() {        const isShow = false        const element = () =&gt; {            if (isShow) {                return &lt;span&gt;我是if&lt;/span&gt;            } else {                return &lt;span&gt;我是else&lt;/span&gt;            }        }        return () =&gt; (            &lt;div&gt;                &lt;span&gt;我是v-show&lt;/span&gt;                {                    element()                }                {                    isShow ? &lt;p&gt;我是三目1&lt;/p&gt; : &lt;p&gt;我是三目2&lt;/p&gt;                }            &lt;div&gt;        )    }4 を実現できます。リストのレンダリング&lt;h2 data-id=&quot;heading-4&quot;&gt; &lt;strong&gt;同様に、jsx/ Thereは tsx の &lt;/strong&gt;v-for&lt;/h2&gt; 命令ではありません。リストを表示するには、Js の配列メソッド &lt;p&gt;map&lt;code&gt; を使用するだけです。&lt;/code&gt;&lt;/p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;setup() {    const listData = [        {name: 'Tom', age: 18},        {name: 'Jim', age: 20},        {name: 'Lucy', age: 16}    ]    return () =&gt; (        &lt;div&gt;            &lt;div&gt;                &lt;span&gt;姓名&lt;/span&gt;                &lt;span&gt;年龄&lt;/span&gt;            &lt;/div&gt;            {                prop.listData.map(item =&gt; {                    return &lt;div&gt;                        &lt;span&gt;{item.name}&lt;/span&gt;                        &lt;span&gt;{item.age}&lt;/span&gt;                    &lt;/div&gt;                })            }        &lt;/div&gt;    ) }</pre><div class="contentsignin">ログイン後にコピー</div></div> <code>5。イベント処理

      バインディング イベントでも単一の中括弧
        {}
      • が使用されますが、イベント バインディングにはプレフィックス

        @ が付きません。代わりに、on に変更されました。例: クリック イベントは onClick

        イベント修飾子を使用する必要がある場合は、次のものが必要です。
      • withModifiers
      • メソッドを使用するには、

        withModifiers メソッドは 2 つのパラメーターを受け取ります。最初のパラメーターはバインドされたイベント、2 番目のパラメーターは使用する必要があるイベントです。 Modifier

        setup() {
            const clickBox = val => {
                console.log(val)
            }
            return () => (
                <div> clickBox('box1')}>
                    <span>我是box1</span>
                    <div> clickBox('box2')}>
                        <span>我是box2</span>
                        <div> clickBox('box3'), ['stop'])}>我是box3</div>
                    </div>
                </div>
            )
        }
        ログイン後にコピー
      • 6、v-model

      jsx/tsx は v-model 構文をサポートします
      // 正常写法
      <input> // vue
      <input> // jsx
      
      // 指定绑定值写法
      <input> // vue
      <input> // jsx
      
      // 修饰符写法
      <input> // vue
      <input> // jsx
      ログイン後にコピー

      7、スロット Slot

      スロットを定義します

      jsx/tsx には slot

      タグがありません。

      を使用する必要があります。スロットを定義します。{}または、renderSlot 関数を使用します。setup 関数は、デフォルトで 2 つのパラメータ 1. props 2. スロット、attrs、emit などを含む ctx コンテキストを受け取ります。

      import { renderSlot } from "vue"
      export default defineComponent({
          // 从ctx中解构出来 slots
          setup(props, { slots }) {
              return () => (
                  <div>
                      { renderSlot(slots, 'default') }
                      { slots.title?.() }
                  </div>
              )
          }
      })
      ログイン後にコピー

      スロットを使用する

      v-slots

      import Vslot from './slotTem'
      export default defineComponent({
          setup() {
              return () => (
                  <div>
                      <vslot> {
                              return <p>我是title插槽</p>
                          },
                          default: () => {
                              return <p>我是default插槽</p>
                          }
                      }} />
                  </vslot>
      </div>
              )
          }
      })
      ログイン後にコピー
      8 を通じてスロットを使用できます。実装するには tsx を使用します。 recursiveComponents-menu

      主な機能は、ルーティング情報に基づいてメニューを自動的に生成することです。

      効果は次のとおりです。

      #コードは次のとおりです。権限などを制御する必要がある場合は、ルーティング情報の

      metavue3 での jsx/tsx のエレガントな使用法について話しましょうに該当するパラメータを追加し、

      で##
      // index.tsx
      
      import { routes } from '@/router/index'
      import MenuItem from './menuItem'
      import './index.scss'
      
      export default defineComponent({
          setup() {
              const isShowRoutes = computed(() => {
                  return routes
              })
              const currentPath = computed(() => {
                  return useRoute().path
              })
      
              return () => (
                  <el-scrollbar>
                      <el-menu>
                          {
                              isShowRoutes.value.map((route) => {
                                  return <menuitem></menuitem>
                              })
                          }
                      </el-menu>
                  </el-scrollbar>
              )
          }
      })
      ログイン後にコピー
      rrree

      を自分で制御します。 menuItem (学習ビデオ共有: Web フロントエンド開発基本プログラミング ビデオ

      )

    以上がvue3 での jsx/tsx のエレガントな使用法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Vue.js vs. React:プロジェクト固有の考慮事項 Vue.js vs. React:プロジェクト固有の考慮事項 Apr 09, 2025 am 12:01 AM

    VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。

    VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

    HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

    React vs. Vue:Netflixはどのフレームワークを使用していますか? React vs. Vue:Netflixはどのフレームワークを使用していますか? Apr 14, 2025 am 12:19 AM

    netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

    Vue Multi-Page開発とはどういう意味ですか? Vue Multi-Page開発とはどういう意味ですか? Apr 07, 2025 pm 11:57 PM

    VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

    VueのDivにジャンプする方法 VueのDivにジャンプする方法 Apr 08, 2025 am 09:18 AM

    VUEにDIV要素をジャンプするには、VUEルーターを使用してルーターリンクコンポーネントを追加するには、2つの方法があります。 @clickイベントリスナーを追加して、これを呼び出します。$ router.push()メソッドをジャンプします。

    VUEのコンポーネントジャンプを実装する方法 VUEのコンポーネントジャンプを実装する方法 Apr 08, 2025 am 09:21 AM

    VUEでコンポーネントジャンプを実装するための次の方法があります。Router-Linkと&lt; router-view&gt;を使用してください。ハイパーリンクジャンプを実行し、ターゲットパスとして属性を指定するコンポーネント。 &lt; router-view&gt;を使用してください現在ルーティングされているレンダリングされているコンポーネントを表示するコンポーネント。プログラマティックナビゲーションには、router.push()およびrouter.replace()メソッドを使用します。前者は歴史を保存し、後者は記録を残さずに現在のルートに取って代わります。

    Vueにタグをジャンプする方法 Vueにタグをジャンプする方法 Apr 08, 2025 am 09:24 AM

    VUEでタグのジャンプを実装する方法には、HTMLテンプレートでAタグを使用してHREF属性を指定する方法が含まれます。 VUEルーティングのルーターリンクコンポーネントを使用します。 JavaScriptでこれを使用します。$ router.push()メソッド。パラメーターはクエリパラメーターに渡すことができ、ルートは動的ジャンプのルーターオプションで構成されています。

    Netflixのフロントエンドの反応、Vue、および未来 Netflixのフロントエンドの反応、Vue、および未来 Apr 12, 2025 am 12:12 AM

    Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

    See all articles