1. 理解ドキュメント: https://v3.cn.vuejs.org/guide/render-function.html#dom-%E6%A0%91 h() は正確には何を返すのでしょうか?実際には実際の DOM 要素ではありません。より正確な名前は createNodeDescription かもしれません。これは、そこに含まれる情報が、子ノードの説明情報など、ページにレンダリングする必要があるノードの種類を Vue に伝えるためです。このようなノードは「仮想ノード」と呼ばれ、多くの場合 VNode と略されます。 「仮想 DOM」とは、Vue コンポーネント ツリーによって構築される VNode ツリー全体のことです。 2. 使用ドキュメント: https://v3.cn.vuejs.org/guide/render-function.html#h-%E5%8F%82%E6%95%B0 1. h() パラメータh() 関数は、VNode を作成するためのユーティリティです。おそらく、より正確には createVNode() という名前が付けられるかもしれませんが、頻繁に使用され、簡潔であるため、h() と呼ばれます。次の 3 つのパラメータを受け入れます。 // @returns {VNode} h( // {文字列 | オブジェクト | 関数} タグ // HTML タグ名、コンポーネント、非同期コンポーネント、または // 機能コンポーネント。 // // 必須。 'div', // {オブジェクト} プロパティ // 属性、プロパティ、イベントに対応するオブジェクト。 // これはテンプレートで使用されます。 // // オプション(開発中は渡すことをお勧めします。渡す必要がない場合は null を渡します) {}, // {文字列 | 配列 | オブジェクト} 子 // `h()` を使用して構築されたサブ VNode、 // または、文字列を使用して「テキスト VNode」またはスロットを持つオブジェクトを取得します。 // // オプション。 [ 「テキストが先に来ます。」 h('h1', '見出し'), h(MyComponent, { いくつかのプロパティ: 'foobar' }) ] ) 2. 使い方が簡単3. カウンターケースを実装する<スクリプト> /* スタイルを設定するには、ここでインポートする必要があります。スタイルタグを使用する場合、scoped を記述できず、ローカルスタイルの設定に役立たないため、推奨されません */ 「./style.css」をインポートします "vue" から { h, ref } をインポートします。 エクスポートデフォルト{ // データの書き込み方法 // data() { // 戻る { // カウンター: 0 // } // }, 設定() { 定数カウンタ = ref(0) 戻り値 { カウンター } }, /** * セットアップを使用する場合、以下でもこれを使用できます。レンダリングのインポートにはこの境界があるため、次の値ではこれを使用する必要があります。 */ 与える() { h("div", null, [ を返します。 h("h1", null, `現在のカウント: ${this.counter}`), h("button", { onClick: () => this.counter++, class: "button" }, "1を追加"), h("button", { onClick: () => this.counter--, class: "button" }, "マイナス1") ]) } } </スクリプト> 純粋なセットアップ記述に変更します。 <スクリプト> /* スタイルを設定するには、ここでインポートする必要があります。スタイルタグを使用する場合、scoped を記述できず、ローカルスタイルの設定に役立たないため、推奨されません */ 「./style.css」をインポートします "vue" から { h, ref } をインポートします。 エクスポートデフォルト{ // データの書き込み方法 // data() { // 戻る { // カウンター: 0 // } // }, 設定() { 定数カウンタ = ref(0) 戻り値 () => { h("div", null, [ を返します。 h("h1", null, `現在のカウント: ${counter.value}`), h("button", { onClick: () => counter.value++, class: "button" }, "1を追加"), h("button", { onClick: () => counter.value--, class: "button" }, "マイナス1") ]) } } } </スクリプト> 4. 関数コンポーネントとスロットの使用1) 親コンポーネント <スクリプト> "vue" から { h, ref } をインポートします。 「./components/Test.vue」からテストをインポートします。 エクスポートデフォルト{ 設定() { 戻る {} }, 与える() { h(Test, null, { を返す // default は関数に対応し、default はデフォルト スロットです。default: props => h("span", null, "親によってコンポーネントに渡されるコンテンツ:" + props.name) }) } } </スクリプト> 2) サブコンポーネント <スクリプト> "vue" から { h } をインポートします。 エクスポートデフォルト{ /** * 夫から渡された内容を受け取る */ 与える() { h("div", null, [ を返します。 h("div", null, "私は子コンポーネントです"), /** * ここで、他のものが渡されたかどうかを判断できます * 何も表示しない場合は null と書くこともできます * パラメータを渡す関数を使用して、パラメータを渡すこともできます */ this.$slots.default ? this.$slots.default({ name: "哈哈哈哈" }) : h("div", null, "私は子コンポーネントのデフォルト値です") ]) } } </スクリプト> 注意:プロジェクトでは、上記のようなコードを書くと面倒すぎるので、現時点では JSX を使用する必要があります。 3. JSXの使用1. JSXの理解通常、jsx は Babel を介して変換されます (React で記述された jsx は Babel を介して変換されます)。 Vue の場合、Babel で対応するプラグインを設定するだけで済みます。 ドキュメント: https://v3.cn.vuejs.org/guide/render-function.html#jsx 2. Vue をサポートするために Babel プラグインをダウンロードします (現在はスキャフォールディングが直接サポートしているようです)npm で @vue/babel-plugin-jsx をインストール -D 3. babelを設定する1) ルートディレクトリに.babel.config.jsを作成します。 2) .babel.config.jsに次のコードを追加します。 モジュール.エクスポート = { プリセット: [ "@/vue/cli-plugin-babel/プリセット" ]、 プラグイン: [ "@vue/babel-plugin-jsx" ] } 4. 使いやすい<スクリプト> 'vue' から { ref } をインポートします エクスポートデフォルト{ 設定() { カウンタ = ref(0) とします 戻り値 { カウンター } }, 与える() { 戻る ( <div> <div>JSX の使用</div> <h2>現在の番号: {this.counter}</h2> </div> ) } } </スクリプト> 5. 反論ケース<スクリプト> '@vue/reactivity' から { ref } をインポートします。 エクスポートデフォルト{ 設定() { カウンタ = ref(0) とします 関数add(){ カウンタ値++ } 関数デクリメント() { カウンタ値-- } 戻り値 { カウンタ、加算、減算 } }, 与える() { 戻る ( <div> <div>JSX の使用</div> <h2>現在の番号: {this.counter}</h2> <button onClick={this.add}>1 を追加</button> <button onClick={this.decrement} >1 減らす</button> </div> ) } } </スクリプト> 6. コンポーネントとスロットの使用1) 親コンポーネント <スクリプト> '@vue/reactivity' から { ref } をインポートします。 「./components/Test.vue」からテストをインポートします。 エクスポートデフォルト{ 設定() { カウンタ = ref(0) とします 関数add(){ カウンタ値++ } 関数デクリメント() { カウンタ値-- } 戻り値 { カウンタ、加算、減算 } }, 与える() { 戻る ( <div> <div>JSX の使用</div> このブロックがセットアップで変数またはメソッドを使用する場合は、これを追加します */ <h2>現在の番号: {this.counter}</h2> <button onClick={this.add}>1 を追加</button> <button onClick={this.decrement} >1 減らす</button> <時間 /> <テスト> 渡されたコンテンツをここに書き込みます。つまり、スロットに渡します。*/ {{ default: props => <p>親から子に渡されます</p> }} </テスト> </div> ) } } </スクリプト> 2) サブコンポーネント <スクリプト> エクスポートデフォルト{ /** * 夫から渡された内容を受け取る */ 与える() { 戻る ( <div> <p>私はコンポーネントです</p> この作品は着用されない可能性があり、デフォルト値を表示する必要があります。この場合、三項演算子を使用する必要があります*/ {this.$slots.default()} </div> ) } } </スクリプト> 注意: h 関数を使用してコンポーネントを記述する場合は、ドキュメントをよくお読みください。上記の説明は初心者向けです。 Vue h 関数の詳しい使い方については、これで記事は終わりです。Vue h 関数に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Dockerの匿名マウントと名前付きマウントの具体的な使用法
>>: vscodeで保存した後のHTML自動フォーマットの問題を解決する
目次問題の説明一般的な機能効果は次のとおりです。思考分析完全なコード要約する問題の説明Teambit...
目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...
これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...
前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...
目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....
目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...
span タグのスタイルに width 属性を直接設定すると、効果がないことがわかります。 disp...
この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...
1. インストールパッケージを使用してMySQLをインストールします(オンラインダウンロードは遅すぎ...
1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...
並べ替えクエリ (order by)電子商取引の場合: 今日完了したすべての注文を表示し、取引金額に...
この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...
目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...
目的: ステーションAをステーションBのセカンダリディレクトリとして扱うのように: http://w...
WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...