问题描述
我的精简版应用程序遇到问题。 问题是我有一个从JSON文件填充的数组。 该数组作为prop传递给子组件。事情是。 我想更改数组内容,然后重新渲染组件。 要么: 我想隐藏该组件,然后再次显示它。 问题是,当我尝试这样做时,第二次更改组件(更新或销毁)后,数组将变为空。 (仅适用于第一次)
查看我的代码段:
<script>
import * as meca from "./meca.json";
import AppMeca from "./AppMeca.svelte";
let test1 = Object.entries(meca);
let courses1 = test1[0][1]; //gets the array from the JSON.
let flag = false;
function toggleMeca() {
flag = !flag;
}
</script>
<button on:click={toggleMeca}> Meca </button>
{#if flag}
<AppMeca courses={courses1} />
{/if}
在这种情况下我该怎么办?
================================== 更新1:
我发现问题与我最初的想法不同。 主要问题是因为我似乎不太了解组件的生命周期。
问题是,AppMeca.svelte组件内部有一个init()函数。该功能对课程数组进行了一些预处理。 问题是当组件被隐藏然后变得可见时,似乎不是从头开始创建的。它在被破坏之前会保留其状态。 因此,在开始时调用init()函数时,它将尝试处理已进行预处理的数组。因此,它混乱了,并给出了一个错误,应用程序停止了。
我认为,当一个组件被销毁时,它确实被销毁了,但似乎没有。 我希望我现在正确理解xD
主要问题解决了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)