【问题标题】:Dispatch actions with Redux Toolkit requires two arguments使用 Redux Toolkit 的调度操作需要两个参数
【发布时间】:2026-02-13 05:45:02
【问题描述】:

使用 Redux Toolkit,我试图在没有事件等上下文的情况下调度操作,所以我收到以下错误:

错误 TS2554:预期 2 个参数,但得到 1 个。未提供“操作”参数。

使用以下代码:

const App = () => {
  const dispatch = useDispatch();
  useEffect(() => {
    (async () => {
      const result = await fetchConfig();
      dispatch(setConfig({ ConfigReducerState: result })); // ---> Error is here <---
    })();
  }, [dispatch]);
};

减速器:

export const configSlice = createSlice({
  name: 'config',
  initialState,
  reducers: {
    setConfig(state, action) {
      const { server, map } = action.payload;
      state.server = server;
      state.map = map;
    },
  },
});

通常我给动作创建函数一个参数 - 表示有效负载的对象,不需要引用状态。但在这里我不能。我做错了什么?

【问题讨论】:

  • 尝试控制台记录调用setConfig({ ConfigReducerState: result })返回的内容,它应该是一个带有payloadtype的对象
  • 也不应该是:dispatch(setConfig({ server: 'something', map: 'something' }));
  • 目前尚不清楚错误来自何处。这是 TypeScript 错误,还是 JS 运行时错误?需要有关完整错误消息的更多详细信息。
  • @alextrastero 我无法记录它,因为代码没有运行。另外,我是否分别发送ConfigReducerStateservermap 也没关系。 @markerikson 我说得更清楚了。

标签: redux redux-toolkit


【解决方案1】:

我以前和每次都看到过这种情况,这是... IntelliJ/WebStorm 中的一个错误。

参见 https://youtrack.jetbrains.com/issue/WEB-46527https://youtrack.jetbrains.com/issue/WEB-42559 - 本质上,WebStorm 有自己的“快速 TypeScript 插值,它不使用官方的 tsserver 进行类型检查,而是一些自煮的东西,它仅根据具有相似性的事物来猜测类型名字 - 并且经常出错。

如果我正确理解了他们的系统,您应该能够在按住 Ctrl 的同时将鼠标悬停在上面看到正确的类型。

最后,除了切换到不会随机猜测但实际上使用 TypeScript 来评估 TypeScript 类型的 IDE 之外,我真的无法告诉你如何解决这个问题。

【讨论】:

  • 谢谢,但我正在使用 VS Code。
最近更新 更多