目次
我是vue : {{aaa}}
当前是react项目内
ここでのアドバンス バージョンとは次のことを指します:
ホームページ ウェブフロントエンド jsチュートリアル Reactプロジェクトでvueコンポーネントを実行するにはどうすればよいですか?手法の紹介

Reactプロジェクトでvueコンポーネントを実行するにはどうすればよいですか?手法の紹介

Apr 11, 2022 pm 08:51 PM
react vue

reactプロジェクトで vue コンポーネントを実行するにはどうすればよいですか?次の記事では、React プロジェクトで vue コンポーネントを実行する方法を例を通して紹介します。

Reactプロジェクトでvueコンポーネントを実行するにはどうすればよいですか?手法の紹介

この記事の背景はインタビューによるものです。vue コンポーネントと React コンポーネントを相互運用して再利用する必要がある場合、どうすればそれらをエレガントに実装できるかという質問がありました。 ?

開発者が手動でコードを転送する場合を除きます。現在のところ、解決策は 2 つしか思いつきません。

  • 解決策 1: Vue コードと React コードの相互変換 (コンポーネント ライブラリの同期)

  • オプション 2 : vue コンポーネントを React プロジェクトで直接実行できます。また、その逆も可能です。

【関連する推奨事項: Redis ビデオ チュートリアル vuejs チュートリアル ]

まずは実装の効果を見てみましょう

Reactプロジェクトでvueコンポーネントを実行するにはどうすればよいですか?手法の紹介

##vue コンポーネントは通常どおり Reat でレンダリングされ、

ボタンを 3 回クリックしました,vueのレスポンスやレンダリングも正常です

具体的にはどうやって実装すればいいのでしょうか?

実装原則

  • 完全版の vue を導入します (パフォーマンスを考慮する場合は、オンデマンドで)

  • componentDidMount ステージまで待機し、

    その後、## をマウントします。
  • #new Vue(..).$mount('#vueApp')

    import Vue from 'vue/dist/vue.min.js' // 引入完整版,否则不能解析vue的组件对象语法
    export default class App extends Component {
      constructor(props) {
        super(props)
      }
      
      componentDidMount() {
        const Foo = {
          template: `
            <div>
              <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
              <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
              <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
              <button @click="aaa++">按钮</button>
            </div>
          `,
          data () {
            return {
              aaa: 2222
            }
          }
        }
        new Vue({
          render: h => h(Foo),
        }).$mount(&#39;#vueApp&#39;)
      }
    
      render() {
        return (
          <div>
            <h1 id="当前是react项目内">当前是react项目内</h1>
            <h1 id="当前是react项目内">当前是react项目内</h1>
            以下将渲染vue组件
            <div id="vueApp" />
          </div>
        )
      }
    }
    ログイン後にコピー

注:

vue のコンポーネント オプション オブジェクトをサポートするだけでよい場合は、webpack を設定する必要はありません。

Vue のコンポーネント オプション オブジェクトは、次のものを参照します。 :

const Foo = { 
    template: ` 
        <div> 
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1>
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1> 
            <h1 id="我是vue-nbsp-nbsp-aaa">我是vue : {{aaa}}</h1> 
            <button @click="aaa++">按钮</button> 
        </div> 
    `, 
    data () { 
        return { 
            aaa: 2222 
        } 
    } 
}
ログイン後にコピー

アドバンス バージョン

ここでのアドバンス バージョンとは次のことを指します:

.vue ファイル/コンポーネントのサポートが必要 (上記のデモは直接コンポーネント オプション オブジェクトです) 、.vue ファイルなし)

例: (上記のデモを引き続き使用し、数行を変更します)

.vue ファイルをインポートするように変更しました:
    import Foo from "./Foo.vue" ;
  • import Vue from &#39;vue/dist/vue.min.js&#39; // 引入完整版,否则不能解析vue的组件对象语法
    import Foo from "./Foo.vue";
    export default class App extends Component {
      ...
      
      componentDidMount() {
        new Vue({
          render: h => h(Foo),
        }).$mount(&#39;#vueApp&#39;)
      }
    
      ...
    }
    ログイン後にコピー
現時点で有効にするには、vue-loader

を設定する必要があります#公式ウェブサイト: https://vue-loader.vuejs.org/guide/#manual-setup

    // 在 webpack.config.js 内
    const { VueLoaderPlugin } = require(&#39;vue-loader&#39;)
    
    module.exports = {
      mode: &#39;development&#39;,
      module: {
        rules: [
          {
            test: /.vue$/,
            loader: &#39;vue-loader&#39;
          }
        ]
      },
      plugins: [
        // make sure to include the plugin for the magic
        new VueLoaderPlugin()
      ]
    }
    ログイン後にコピー
  • #注意事項

提案 テストするときは、反応スキャフォールド プロジェクトを使用しないでください

。webpack.config.js を最初から構成する反応プロジェクトを使用してください
  • #現在使用しているスキャフォールディングの最新バージョンでは、eject 実行後、webpack.config.js に記述するときにエラーが報告されます。これは、VueLoaderPlugin が oneOf 構文と互換性がないためです。

    使用しない場合 .vue ファイルを解析し、vue のコンポーネント オプション オブジェクト構文を直接使用する場合、vue-loader を設定する必要はありません
  • 概要
  • テストするときは、反応足場プロジェクトを使用しないでください
  • 、webpack.config.jsを最初から構成する反応プロジェクトを使用することをお勧めします

    #.vue ファイルを解析する必要がない場合、vue のコンポーネント オプション オブジェクト構文を直接使用する場合は、vue-loader を設定する必要はありません
  • 最後に、比較のために、vue プロジェクトで使用します。React コンポーネントと、React プロジェクトで使用される Vue コンポーネントの構成の違いです。

webpack.config.js のローダーを設定する必要がありますか?

#vue プロジェクトで反応コンポーネントを使用するはいbabel-loader## を設定する必要があります# ,.jsx ファイルをコンパイルします、babel-loader のオプション オプションに特に注意する必要があります反応プロジェクトで vue コンポーネントを使用します が必要な場合は、、vue-loader を設定する必要があります

no、.vue ファイルを解析する必要がなく、vue の コンポーネント オプション オブジェクト 構文を直接使用する場合、追加の構成は必要ありません vue-loader## # が必要です。 .vue ファイルをサポートするために
##この記事は、https://juejin から転載されています。 .cn/post/ 7083303446161391623著者: bigtreeプログラミング関連の知識については、 プログラミング ビデオ をご覧ください。 !

以上がReactプロジェクトでvueコンポーネントを実行するにはどうすればよいですか?手法の紹介の詳細内容です。詳細については、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インスタンスでメソッドを定義し、関数ロジックを書き込みます。

HTMLにおけるReactの役割:ユーザーエクスペリエンスの向上 HTMLにおけるReactの役割:ユーザーエクスペリエンスの向上 Apr 09, 2025 am 12:11 AM

ReactはJSXとHTMLを組み合わせてユーザーエクスペリエンスを向上させます。 1)JSXはHTMLを埋め込み、開発をより直感的にします。 2)仮想DOMメカニズムは、パフォーマンスを最適化し、DOM操作を削減します。 3)保守性を向上させるコンポーネントベースの管理UI。 4)国家管理とイベント処理は、インタラクティブ性を高めます。

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:24 AM

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

ReactとFrontend:インタラクティブエクスペリエンスの構築 ReactとFrontend:インタラクティブエクスペリエンスの構築 Apr 11, 2025 am 12:02 AM

Reactは、インタラクティブなフロントエンドエクスペリエンスを構築するための好ましいツールです。 1)Reactは、コンポーネント化と仮想DOMを通じてUIの開発を簡素化します。 2)コンポーネントは、関数コンポーネントとクラスコンポーネントに分割されます。関数コンポーネントはよりシンプルで、クラスコンポーネントはより多くのライフサイクル方法を提供します。 3)Reactの作業原則は、パフォーマンスを改善するために仮想DOMおよび調整アルゴリズムに依存しています。 4)国家管理は、usestateまたはthis.stateを使用し、ComponentDidmountなどのライフサイクルメソッドが特定のロジックに使用されます。 5)基本的な使用には、コンポーネントの作成と状態の管理が含まれ、高度な使用にはカスタムフックとパフォーマンスの最適化が含まれます。 6)一般的なエラーには、不適切なステータスの更新とパフォーマンスの問題が含まれます。

VUE関数のパラメーターを渡す方法 VUE関数のパラメーターを渡す方法 Apr 08, 2025 am 07:36 AM

パラメーターをvue.js関数に渡す2つの主な方法があります。スロットを使用してデータを渡すか、バインドで関数をバインドし、パラメーターを提供します。スロットを使用してパラメーターを渡します。コンポーネント内でアクセスし、関数のパラメーターとして使用されます。バインドバインディングを使用してパラメーターを渡します:vue.jsインスタンスのバインド関数と関数パラメーターを提供します。

反応とフロントエンドスタック:ツールとテクノロジー 反応とフロントエンドスタック:ツールとテクノロジー Apr 10, 2025 am 09:34 AM

Reactは、コアコンポーネントと状態管理を備えたユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1)コンポーネントと州の管理を通じてUIの開発を簡素化します。 2)作業原則には和解とレンダリングが含まれ、React.memoとusememoを通じて最適化を実装できます。 3)基本的な使用法は、コンポーネントを作成およびレンダリングすることであり、高度な使用法にはフックとコンテキストアピの使用が含まれます。 4)不適切なステータスの更新などの一般的なエラーでは、ReactDevtoolsを使用してデバッグできます。 5)パフォーマンスの最適化には、React.MEMO、仮想化リスト、コードスプリッティの使用が含まれ、コードを読みやすく保守可能に保つことがベストプラクティスです。

See all articles