我正在使用 aurelia 开发并使用 aurelia-store 进行应用程序状态管理。在从服务器加载数据时,我想更改 isLoading 字段 true/false 以在相关组件上显示掩码。所以我在我的状态下定义了一个属性isLoading
(例如)。在加载操作中,我想首先将加载状态更改为 true,然后将数据检索到 false。因此,根据该字段(isLoading)的值,我想在组件上显示掩码。
我想要这样的东西:
export async function getRoles(state) {
try {
return Object.assign({}, state, { isRolesListLoading: {busy: true} });
const getRoles = await accountManagement.getRoles();
return Object.assign({}, state, { getRoles, isRolesListLoading: {busy: false} });
} catch (error) {
console.log('error getRoles "error": ', error);
}
}
但正如我从 aurelia 文档中得出的那样,一个动作中不允许进行两种状态更改。
我应该怎么办?
我有一个想法,首先在这个动作中调度另一个动作,使 isLoading 为真,然后完成这项工作。像这样的东西:
export async function getRoles(state) {
try {
desiredDispatch('goToLoadingState'); // fake code
const getRoles = await accountManagement.getRoles();
return Object.assign({}, state, { getRoles, isRolesListLoading: {busy: false} });
} catch (error) {
console.log('error getRoles "error": ', error);
}
}
但是我找不到一些关于如何在一个动作中调度另一个动作的文档。
有哪些可能的解决方案?