首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在thunk-action中传递静态类型的参数?

如何在thunk-action中传递静态类型的参数?
EN

Stack Overflow用户
提问于 2020-07-21 18:46:11
回答 1查看 33关注 0票数 0

在我的react应用程序中,我在Action Creator的帮助下创建了一个ThunkAction。它看起来像这样-

代码语言:javascript
复制
export const oneMoreAsyncThunkAction: ActionCreator< ThunkAction<void, IChatState, {}, ToggleOnlineStateAction >> = (payload: boolean) => {
    return (dispatch: ThunkDispatch<IChatState, {}, ToggleOnlineStateAction >, getState, extraArguement): void => {
      try {        
          const promise = new Promise<ToggleOnlineStateAction>((resolve, reject) =>{
              setTimeout(() => {
                  resolve({
                    type: TOGGLE_ONLINE_STATE,
                    payload: payload
                });
              }, 1000);
          })
          promise.then(action => {
              dispatch(action)
          });
      } catch (e) {}
    };
  };

我期望在我的操作中有一个布尔参数(payload)

在另一个文件中,我像这样使用此操作-

代码语言:javascript
复制
let action = ChatActions.oneMoreAsyncThinkAction(!props.isOnline);
dispatch(action);

我期望VSCode会建议我在操作中传递一个布尔值作为参数。但这表明可以在参数中传递...any[]值。

我希望我的Action是静态类型的。我如何修复代码,以便VSCode建议我在操作中传递布尔值。

EN

回答 1

Stack Overflow用户

发布于 2020-07-21 23:24:33

这里最简单的答案是使用the createAsyncThunk API from our official Redux Toolkit package,它是用TS编写的强类型的:

代码语言:javascript
复制
const toggleOnline = createAsyncThunk(
  'chat/toggleOnline',
  async (online: boolean) => {
    await sleep(1000); // use a common util function here
    return online; // becomes the success action payload
  }
)

// later
dispatch(toggleOnline(!isOnline));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63012830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档