标签: reactive-variable

为什么我无法访问 svelte3 脚本标签内的“$:”又名反应变量?

我对 svelte 还很陌生,一周前就开始了......

\n\n

我想知道我真的很喜欢\xe2\x9d\xa4\xef\xb8\x8f\xe2\x9d\xa4\xef\xb8\x8f它但我有一个问题\xe2\x98\xb9\xef\xb8 \x8f\xe2\x98\xb9\xef\xb8\x8f

\n\n

我正在尝试访问脚本标签中的 $: 变量,但出现 Error Cannot access \'greeting\' before initialization

\n\n
<script>\n    let name = \'world\';\n    $: greeting = `Hello ${name}`\n    console.log(greeting)\n</script>\n\n<h1>Hello {name}!</h1>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试在使用它之前用let声明变量

\n\n
    let greeting\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在这种情况下console.log输出undefined.

\n

svelte svelte-3 reactive-variable

3
推荐指数
1
解决办法
1046
查看次数

Apollo Client Reactive 变量 - 更新值后不触发重新渲染

我正在尝试使用反应变量:

我的缓存文件:

import { makeVar } from "@apollo/client"

export const colorVar = makeVar('red')
Run Code Online (Sandbox Code Playgroud)

文件 A(更新值):

import { colorVar } from "cache"
colorVar('green')
Run Code Online (Sandbox Code Playgroud)

文件 B(读取值并应在文件 A 中更新值后重新渲染):

import { colorVar } from "cache"
console.log(colorVar())
Run Code Online (Sandbox Code Playgroud)

文件 A 中的更新操作不会触发文件 B 的重新渲染

reactjs apollo-client reactive-variable

3
推荐指数
2
解决办法
1040
查看次数

在 Svelte JS 中,如果某个变量只是被打印但不参与给出值,那么反应变量如何工作?

https://svelte.dev/repl/f8db4771ba794c658d7c25a6e72d1b46?version=3.18.1中的代码

有两个“反应变量”:

$: nameUpperCase = name.toUpperCase();

$: if (name === "city") { 
    console.log("RUNNING HERE 01", age);
} else {
    console.log("RUNNING HERE 02", age);
}
Run Code Online (Sandbox Code Playgroud)

如果值发生name变化,那么nameUpperCase也会发生变化。这个很容易。

但是对于第二部分,似乎当nameor的值age发生变化时,则对该if行进行评估。如果从age中删除console.log(),如https://svelte.dev/repl/68c2cdea2bfd462caa5ac5519fb8b99d?version=3.18.1 中所示,age更改无关紧要。if不评估该行。

但是age从不参与为if语句生成任何最终值。它只是被打印出来,并且console.log总是 return undefined。那么规则是什么?不知何故,Svelte“神奇地”收集了 之后的所有变量$:,然后如果其中任何一个发生变化,则执行$:? 那么即使变量不参与形成某个最终值,它仍然被考虑吗?

svelte reactive-variable

2
推荐指数
2
解决办法
1824
查看次数