You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router v7 SPA模式下API路由调用clientAction失败的问题求助

React Router v7 SPA模式下API路由调用clientAction失败的问题求助

大家好,我最近在React Router v7的SPA模式项目里碰到了一个卡壳的问题,想请各位大佬帮忙分析下!

目前我的项目是基于React Router v7以SPA模式运行的,我写了一个API路由并想用clientAction来处理POST请求。奇怪的是:如果用React Router官方提供的useSubmit钩子来提交请求,能正常触发clientAction并拿到响应;但换成原生fetch API发POST请求时,就直接报错,而且clientAction里的日志完全没打出来,说明这个方法根本没被执行到。

具体的错误表现有两个:

  • 控制台会抛出react-i18next的错误:TypeError: i18n.dir is not a function
  • 同时还会出现React Router的错误日志:Error: You made a POST request to "/api-test" but did not provide an action for route "routes/api-test"

我反复检查了clientAction的定义,看起来语法和参数都没问题,但就是触发不了。我怀疑这会不会是React Router v7 SPA模式的特有限制?但翻遍官方文档也没找到相关说明,实在卡在这里没头绪了,想请各位给点排查方向!

下面是我的相关代码:

组件代码(app/projects/test/route.tsx)

export default function Component() {
  return (
    <>
      <Button
        onPress={() => {
          void fetch(`/api-test`, {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
            },
            body: JSON.stringify({ message: "Hello, world!" }),
          });
        }}
      >
        {"Validate Data"}
      </Button>
    </>
  );
}

API路由代码(api-test/route.ts)

import type { ClientActionFunctionArgs } from "react-router";

export async function clientAction({ request }: ClientActionFunctionArgs) {
  console.log("Received request:", request);
  const body = await request.json();
  console.log("Received request body:", body);
  return Response.json({
    message: "Hello, world!",
    received: body,
    success: true,
  });
}

有没有大佬遇到过类似的问题?或者清楚React Router v7中clientAction的触发条件?麻烦指点一下,谢谢啦!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 06:44:30