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

react-redux-typescript项目GET接口传递可选查询参数实现问询

实现方案

1. 调整事件触发逻辑,传递输入值

修改HandleKeyPress函数,将当前输入框的状态值传入loadList的请求参数中:

const HandleKeyPress = (event:React.KeyboardEvent<HTMLInputElement>) => {
  if(event.key === 'Enter') {
    dispatch(loadList({
      type: viewType.search,
      id1: text.id1,
      id2: text.id2,
      id3: text.id3
    }))
  }
}

2. 扩展TS请求类型定义

更新LoadListRequest接口,新增三个id字段的类型声明:

interface LoadListRequest {
  type: viewType,
  id1?: string,
  id2?: string,
  id3?: string
}

3. 改造请求函数实现参数拼接

无需手动拼接查询字符串,使用axios内置的params配置即可自动生成符合要求的URL参数,提前过滤掉空值的参数即可:

const getTask = (request: LoadListRequest) => {
  // 过滤出有值的id参数
  const validParams = Object.fromEntries(
    Object.entries(request).filter(([key, value]) => 
      ['id1', 'id2', 'id3'].includes(key) && value?.trim()
    )
  )
  return axios.get("/api/search/", {
    params: validParams
  })
}

如果需要手动拼接参数,可以使用URLSearchParams实现,效果一致:

const getTask = (request: LoadListRequest) => {
  const params = new URLSearchParams()
  ;['id1', 'id2', 'id3'].forEach(key => {
    const value = request[key as keyof LoadListRequest]
    if (value?.trim()) params.append(key, value.trim())
  })
  return axios.get(`/api/search/?${params.toString()}`)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04