スイッチングコンポーネントによるSvelte/Sapper問題
4813 ワード
私は、最初のsvelteバグが何であるかについて、働いていました.非常に大まかに、私はこのように見えるページセットアップを持っています
上記のコードから推論できます.
Firefoxのコンソールをテストするとき、以下のエラーが発生しました.
私はDOMを変更するために別のライブラリを使用していなかった唯一のsvelte.いずれにせよ、答えの説明されたfixは私のために働きました.そして、それは私のコンポーネントをもう一つのノードのそれらの条件の中に包むことでした.
考えを捨てる
私は、これはSvelteの一般的な相対的な未熟さを示すために反応するか、Vueと比較するために行くと思います.私はSvelteのファンのままですが、それでも小さなフレームワークを使用するときは、フレームワークの実際のバグにバインドされていることを心に留めておくのが良いです.
<script>
and <style>
セクションを省略し、省略されていないコンポーネントのプロパティ)<main>
{#if $state === 'game'}
<GameStageLocal />
{:else if $state === 'deal'}
<DealAnimation onDone={dealingDone} />
{:else}
<div>Initializing...</div>
{/if}
</main>
The <DealAnimation>
コンポーネントはいくつかのゲームスタートアニメーションを再生し、それが完了したらonDone
ハンドラが渡されます.それは更新することですstate
(書物店)game
だからインタラクティブなゲームのUIが開始されます.上記のコードから推論できます.
$state
自動購読ストアですので、その値が変更されると、そのようなページのDOMを変更します<GameStageLocal>
現在、何がページにありますか<DealAnimation>
DOMから削除されます.Firefoxのコンソールをテストするとき、以下のエラーが発生しました.
TypeError: t.parentNode is null
私のsvelteコードのエラーを見つけることができず、svelte - devのビルド出力にエラーがなかったので、少し困惑しました.オンラインで検索するとthis StackOverflow post どちらが私の問題ですか.答えは以下の通りです.Ran into this error recently. In my case it was due to another library changing the DOM. (In my case fontawesome)
私はDOMを変更するために別のライブラリを使用していなかった唯一のsvelte.いずれにせよ、答えの説明されたfixは私のために働きました.そして、それは私のコンポーネントをもう一つのノードのそれらの条件の中に包むことでした.
<main>
{#if $state === 'game'}
<div>
<GameStageLocal />
</div>
{:else if $state === 'deal'}
<div>
<DealAnimation onDone={dealingDone} />
</div>
{:else}
<div>Initializing...</div>
{/if}
</main>
そして、これはうまくいきました.考えを捨てる
私は、これはSvelteの一般的な相対的な未熟さを示すために反応するか、Vueと比較するために行くと思います.私はSvelteのファンのままですが、それでも小さなフレームワークを使用するときは、フレームワークの実際のバグにバインドされていることを心に留めておくのが良いです.
Reference
この問題について(スイッチングコンポーネントによるSvelte/Sapper問題), 我々は、より多くの情報をここで見つけました https://dev.to/bigi/svelte-sapper-issue-with-switching-components-3e4lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol