问题描述
我有一个名为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 (将#修改为@)