Vue 3 - Svgator プレーヤーは常に未定義です。
P粉478835592
P粉478835592 2023-07-28 08:44:31
0
1
456
<p>現在、SVGatorを使用してSVGアニメーションを作成しています。 <br />これをリソースとしてアプリケーションにインポートし、実行してみました。 </p><p>このドキュメントの指示に従い、正常に実装しました。 </p><p>ただし、大量のアニメーションを作成する必要があるかもしれないので、より一般的なものにしてみました。 </p>


<pre class="brush:js;toolbar:false;"><スクリプトセットアップ lang="ts"> import { ref、defineComponent、h、component、watch } from 'vue'; '@assets/example.svg?raw' から exampleSvg をインポートします。 インターフェース IComponentProperties { SVG: 文字列; } constComponentProperties = withDefaults(defineProps<IComponentProperties>(), { svg: () => 例Svg, }); const 要素 = ref(); const animeSvg =defineComponent({ 与える() { return h('svg', { innerHTML:componentProperties.svg, ref:要素 }); }、 }); 関数 runAnimation() { if (!element.value) が戻る; const { firstChild } = 要素.値; const svg = firstChild as any; svg?.svgatorPlayer?.play(); } 時計( () => 要素.値、 () => { runAnimation(); }、 { 即時: true、 } ); </スクリプト> <テンプレート> <コンポーネント :is="animatedSvg" /> </テンプレート> </pre> <p>これは、同じコードを含む完全な Vue アプリケーションです。 </p><p>svg?.svgatorPlayer が常に null なのはなぜですか? </p><p><strong></strong></p>
P粉478835592
P粉478835592

全員に返信(1)
P粉455093123

それでは、あなたの質問に答えると、firstChild は svgatorPlayer を含む HTMLElement であるようです。

?raw を使用して SVG を文字列として処理しています。

この問題を解決するには、この回答に従う必要があります。

次に、提供されているドキュメントを読むと、svg で JavaScript を使用しているのではなく、文字列として配置していることがわかります。これが、svgatorPlayer が null に等しい理由です。js が実行されていない場合、svgatorPlayer は存在しないからです。解決策の 1 つは、v-html で svg を実行することですが、XSS インジェクションの問題に注意してください。

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!