为什么我的符文包含一个数组,而不是反应性的?

问题描述 投票:0回答:1

Svelte5 Web 开发关于符文的问题

在一个单独的

.svelte.js
文件中我有

export let allQuestionsRune = $state([new ObjectWithStringProperty("hi")])

然后在我正在做的一些+页面文件中的按钮

onClick
方法中

allQuestionsRune[0].stringProperty = "new string"

然后在一个单独的 svelte 组件中,我引用这个确切的属性:

<p>{allQuestionsRune[0].stringProperty}</p>

预期行为:我在屏幕上看到“hi”。然后我单击按钮,我应该看到“hi”更改为“new string”。

实际结果:我在屏幕上看到“hi”。就是这样。该按钮根本没有更新。我认为这应该是反应性的......我不明白发生了什么。我已验证

onClick
方法已正确触发。

摘自一些我不完全理解的简洁文档... 如果 $state 与数组或简单对象一起使用,结果是一个深度响应式状态代理。 ...也许这是一个提示?我根本不明白这段摘录。

我错过了什么?为什么我的符文表现不符合我的预期?

html svelte sveltekit svelte-5
1个回答
0
投票

类字段在 Svelte 5 中不是反应式的。因此问题不在于状态保存和数组,而在于您尝试更改的数组中的值是类的实例。如果它是普通的 JavaScript 对象,它就可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.