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

TypeScript/React传递transferFilterValues.currency到搜索组件过滤货币表

你的判断是对的,React Query的查询完全依赖query key来识别不同的查询请求,只要把筛选参数加到key里,参数变化时会自动触发重新查询,同时会按不同的key缓存对应结果。
你现在的代码只需要修改useGetTransferRecord钩子的query key配置即可:

import { useQuery } from 'react-query'

import useUser from 'hooks/user'
//  apis
import { transactionAPI } from 'apis'
import { useSelectedAccount } from './account'

export function useGetTransferRecord(currency?: string) {
  const { user } = useUser()
  const { account } = useSelectedAccount()

  return useQuery(
    // 把所有影响查询结果的参数都放到query key里
    ['get-filtered-transfer', account?.uuid, currency],
    () => transactionAPI.getAllTransferByAccountUuid(account.uuid, currency),
    {
      // 只有当依赖项都存在时才触发查询,避免无效请求
      enabled: !!user && !!account && !!currency,
      // 可选配置:控制缓存的新鲜时间,有效期内切换回已查询过的货币不会重复发请求,单位是毫秒
      staleTime: 5 * 60 * 1000,
      // 可选配置:开启后切换筛选条件时会保留上一次的查询结果,避免表格出现空白加载态
      keepPreviousData: true
    }
  )
}

修改完成后,你选择货币下拉框时,transferFilterValues的currency会更新,传入useGetTransferRecord的参数变化会触发query key变化,React Query会自动拉取对应货币的转账记录,表格也会同步刷新。
后续如果需要新增status等其他筛选维度,只需要把对应参数也加入query key,同时传给接口即可,逻辑完全一致。
注:你提供的CurrenciesTable组件中使用了未定义的convertFilterValues变量,自行补充对应状态定义即可,不影响转账表格的筛选逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:24:02