ホスト設定関数の外で、Vue3 動的コンポーネントでプロビジョニング/インジェクションを宣言する方法はありますか?
P粉384366923
2023-08-30 09:41:50
<p><code>Vue3</code> で <code>動的コンポーネント</code> を作成しています。 v-bind
を使用して props
を提供します。 </p>
<pre class="lang-js prettyprint-override"><code><component :is='MyComponent' v-bind='myProps' />
</code></pre>
<p><code> を使用して </code> 機能を提供/挿入したいと考えています。提供したプロパティを動的コンポーネントに追加するにはどうすればよいですか。私の動的コンポーネントは、<code>setup</code> 関数で <code>inject</code> を呼び出し、その子コンポーネント <code> の </code> 値を期待しています。 </p>
<p>これは Vue では文書化されていませんが、試してみましたが成功しませんでした。 </p>
<pre class="brush:php;toolbar:false;"><component :is='MyComponent' v-bind='myProps' :provide='myProvidedProps'/></pre>
<p><code>provide</code> オブジェクトを <code>props</code> オブジェクトに入れてみました。 </p>
Vue3 ソース コードを参照した後、
2 つのオプションは次のとおりです:指定をテンプレートで
動的コンポーネントに直接提供する方法はありません。これは、動的コンポーネントをホストする親の設定関数またはオプション、あるいは動的コンポーネントの設定またはオプションで呼び出す必要があります。
動的コンポーネントをホストするコンポーネントで- provide
リーリー
リーリー
これは、動的コンポーネントがアクティブ化される前にセッター関数が呼び出されるため、私にとっては機能しません。提供された値とともにコンポーネントのタイプも設定する必要があります。を呼び出します。
props として提供される項目をコンポーネントに送信し、動的コンポーネントからそれらを呼び出せるようにします。-
リーリー
リーリー
私のコンポーネントリーリー
ここで、各動的コンポーネントが受信プロバイダーを理解し、呼び出す責任を負う必要があるため、これには問題があります。リーリー
次のように使用します:リーリー
解決策 2default スロット
Provide.vueに配置するだけで済みます。
リーリー
そして次のように使用します:リーリー