为什么$state符文不能处理布尔条件(需要$effect)

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

我有点困惑为什么

$state
符文无法处理布尔条件。为什么这需要一个单独的符文,在这种情况下是
$effect
?在 Svelte 文档中,他们强调尽可能少地使用
$effect
,但这对我来说似乎是一个非常标准的场景,所以我不确定为什么它不能与
$state
一起使用。

为什么这有效:

let isInteractivePage = $state(false);
$effect(() => {
    isInteractivePage = $page.url.pathname.startsWith('/interactive');
});

但这不是:

let isInteractivePage = $state($page.url.pathname.startsWith('/interactive'));
boolean state svelte sveltekit svelte-5
1个回答
0
投票

后者初始化一个new状态,然后该状态独立于源。您在这里寻找的是

$derived
,这是一种基于依赖关系更新的状态。

const isInteractivePage = $derived($page.url.pathname.startsWith('/interactive'));

(可以用

const
来表示该变量不是手动更改的,但会在内部更新。)

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