gpt4 book ai didi

reactiveui - ReactiveCommand.Execute 不触发 IsExecuting

转载 作者:行者123 更新时间:2023-12-01 12:24:38 26 4
gpt4 key购买 nike

我订阅了一个命令的 IsExecuting:

LoginCommand.IsExecuting.Subscribe(x => Log("Logging in"));

当我的 Command 被 InvokeCommand 调用时它工作正常,但是当我通过以下方式调用它时:
LoginCommand.Execute();

IsExecuting observable 不会被触发。

这有效:
Observable.Start(() => { }).InvokeCommand(LoginCommand);

有人知道为什么调用 Execute 方法时 IsExecuting 属性没有改变吗?我正在尝试对命令进行单元测试,所以我认为这将是从测试中执行它的最佳方式。

最佳答案

升级到 ReactiveUI 7.0 后,Execute()方法变了。现在它不会立即触发命令。相反,它返回一个冷 IObservable你必须订阅才能让事情发生。

LoginCommand.Execute().Subscribe();

release notes 中查看有关 RxUI 7.0 更改的文章. Ctrl+F “ReactiveCommand 更好”。它明确指出:

the Execute exposed by ReactiveCommand is reactive (it returns IObservable). It is therefore lazy and won't do anything unless something subscribes to it.

关于reactiveui - ReactiveCommand.Execute 不触发 IsExecuting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com