错误: Svelte 的快照存储不一致
X 状态版本
X状态版本 5
说明
在使用SvelteKit 4的项目中,我即将完成XState升级为v5. 然而,我发现了一些我使用X State v4时没有的问题.
之前,我有很多这样的事, 而且他们以前工作很好。 丝绒 脚本 > 从“ xstate/ svelte” 导入{useMachine} ; 从“ $app/ navigation ” 导入 {goto} ;
从'./foo.ts'导入{fooMachine};
const {state} = 使用机器( fooMachine); (简体中文)
如果 $. matches( “ 活动 ”) ) < slot /> (秒数) {: else} 时间轴: 等待去('/某处/去 )] 正在装入 {/await}(等待着) {/if} (英语).
现在,用v5,`$snapshot'店似乎没有正常工作,或者至少不够快,因为我得到无休止的重定向循环。
为了修理他们 我不得不这么做
丝绒
脚本 >
从“ @ xstate/ svelte” 导入{us Actor, 使用Selector} ;
从“ $app/ navigation ” 导入 {goto} ;
从'./foo.ts'导入{fooMachine};
Const { actor ref} = 使用 Actor(fooMachine) ;
Const为Aactive = 使用Selector( actor Ref, (snapshot)) {
返回快照. matches ("活性");
* ;
</script> (简体中文)
如果有的话
< slot /> (秒数)
{: else} 时间轴:
等待去('/某处/去 )]
正在装入
{/await}(等待着)
{/if} (英语).预期成果
" 使用者() " 归还的 " $sessionSnapshot " 商店应与 " 活跃 " 国家相符。
实际结果
" $sessionSnapshot " 商店仍处于初始状态: " 不活跃 " 。 然而,使用`useSelector()'更新了新的订阅。
- 复制
https://codesandbox.io/p/GitHub/phcoliveira/xstate-snapshot- problem/main? 进口=为真.
其他背景
需要退出的主要文件有:
src/lib/需要激活/需要激活. svelte.
src/路由/激活/+page.svelte但请仔细看看
有办法绕过这个 例如,在机器的逻辑中拥有承诺,并且发送一个事件,通常也是有效的.
但我在第一个文件中包含了一个奇特的修饰,它使用Selector而不是使用用Actor返回的快照.
我无法证实它曾经和X State 4合作过, 因为那时我有一个机器里面有这么多演员(服务, 在升级到XState 5时,我把它们肢解了,以便制造出更小的机器并减少最初的捆绑尺寸.
内容来源: statelyai/xstate