Redux Toolkit:具有两个连续的调度,而后者取决于前者

问题描述

我有一个名为getRole的动作和一个名为getPoliciesFrom的动作。 getRole返回角色,getPoliciesFrom返回该角色附加的策略列表。然后,我需要分派这些操作以支持功能。

我在getRole中调度useEffect,并使用useSelector来获取role作为状态

const role = useSelector((state: RootState) => state.settings.role);

//...

useEffect(() => {
  dispatch(getRole());
},[dispatch]);

现在为了获得策略,我想到了两个选择:或者我添加条件检查以查看role是否为空,如果不是null,则分派{{1} }并传递getPoliciesFrom作为其参数。所以看起来像这样:

role

或者我使用第一个调度返回的承诺,并在承诺解决后将第二个调度附加在const role = useSelector((state: RootState) => state.settings.role); useEffect(() => { dispatch(getRole()); if(role) { dispatch(getPoliciesFrom(role)); } },[dispatch]); 中。看起来像这样

then

两个似乎都在工作。但是对于第二种方法,我的ts编译器为我附加到调度程序上的useEffect(() => { dispatch(getRole()).then(result => dispatch(getPoliciesFrom(result)) },[dispatch]); 大喊大叫,

类型'AsyncThunkAction '。

但是我确实从then返回了结果。这是它的代码

getRole

我也不知道如何正确输入从承诺中获得的export const getRole = createAsyncThunk( "settings/getRole",async () => { let response: GetServiceRoleForAccountResponse; try { response = await api.getServiceRoleForAccount().promise(); } catch (error) { if ( error.statusCode === notAssociatedStatusCode && error.message === notAssociatedErrorMessage ) { return { role: null }; } throw error; } return { role: response.role }; } );

最重要的是,哪种方法更好?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)