如何先运行操作,然后在 xstate 中有条件地定位

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

我正在使用 xState 应用程序机器,我发现自己需要按顺序做事。下面,当我执行 NAV_OK 时,我希望它首先运行“运行搜索”操作,然后在运行后,我希望它根据某些防护/条件自动聚焦于正确的元素。 它似乎正在选择它们反而。不幸的是,我无法将操作“run_search”移动到每个目标块中,因为我需要它在处理这些目标块之前运行。

NAV_OK: [ //run the search and return products/videos { actions: 'run_search' }, { //if products exists focus on that swimlane target: 'products', cond: (ctx) => ctx.products > 0 }, { //if videos exists focus on that swimlane target: 'videos', cond: (ctx) => ctx.videos > 0 } ],
    
conditional-statements state target state-machine xstate
2个回答
1
投票
我最终创建了另一个状态,在其中处理 run_search 然后我使用了一个奇怪的 xstate '' 称为瞬态转换的东西。

newState: { id: 'newState', entry: 'run_search', on: { '': [ { cond:(ctx) => ctx.products > 0, target:'products', }, { cond:(ctx) => ctx.videos > 0, target: 'videos', }, { target: 'idle' } ] } }
    

0
投票
我可以提出两个以上的条件吗?

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