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

React Router action方法参数类型定义问题(.NET C#开发者求助)

React Router Action 方法参数的 TypeScript 类型定义方案

核心类型导入与使用

React Router 为 action 函数的参数提供了专属类型 ActionFunctionArgs,直接从 react-router-dom 导入即可:

import { ActionFunctionArgs } from "react-router-dom";

export async function action({ request, params }: ActionFunctionArgs) {
  const formData = await request.formData();
  const updates = Object.fromEntries(formData);
  // 后续逻辑...
}

自定义 Params 类型

如果你的路由包含动态参数(比如教程中的 contactId),可以通过自定义接口约束 params 的结构:

import { ActionFunctionArgs, Params } from "react-router-dom";

// 定义匹配路由的参数接口
interface ContactParams extends Params {
  contactId: string;
}

export async function action({ request, params }: ActionFunctionArgs & { params: ContactParams }) {
  // 此时 params.contactId 会被正确推断为 string 类型
  const contactId = params.contactId;
  const formData = await request.formData();
  const updates = Object.fromEntries(formData);
  // 后续逻辑...
}

Request 类型的说明

你调试看到的 Request 是浏览器原生 DOM API 类型,无需额外导入。只要你的 tsconfig.json 中 compilerOptions.lib 包含 "dom"(默认配置通常已包含),TypeScript 就能自动识别该类型:

{
  "compilerOptions": {
    "lib": ["dom", "dom.iterable", "esnext"]
  }
}

内容的提问来源于stack exchange,提问作者user3928256

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:19:54