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

表单重置时swt_culture_type字段值无法重置的问题

问题:表单重置时swt_culture_type字段无法正常重置

执行表单重置操作时,其余字段值均能正常重置,但swt_culture_type字段的值无法重置。即便直接调用setValue设置该字段,它仍始终显示true。

相关代码如下:

const { data: GetCultureTestHeadersDetails } = useQuery({
    queryKey: ["headerDataDetailsKey", props?.culture_test_header_id, props?.test_component_id],
    queryFn: async () => {
        return await GetCultureTestHeadersDetailsEP(props?.culture_test_header_id, props?.test_component_id, true, 5, 1);
    },
});

React.useEffect(() => {
    if (GetCultureTestHeadersDetails?.data?.culture_type) {
        reset({
            txt_code: GetCultureTestHeadersDetails.data.culture_code,
            atc_test_component: {
                test_component_id: GetCultureTestHeadersDetails.data.test_component_id,
                test_component_code: GetCultureTestHeadersDetails.data.test_component_print_name,
                test_component_print_name: GetCultureTestHeadersDetails.data.test_component_print_name,
                item_id: 0,
            },
            swt_is_colony_count: GetCultureTestHeadersDetails.data.is_colony_count,
            txt_colony_count_label: GetCultureTestHeadersDetails.data.colony_count_label,
            txt_colony_count_default_value: GetCultureTestHeadersDetails.data.colony_count_default_value,
            swt_is_gram_strain: GetCultureTestHeadersDetails.data.is_gram_strain,
            txt_gram_strain_label: GetCultureTestHeadersDetails.data.gram_strain_label,
            ddl_gram_stain_default_value: GetCultureTestHeadersDetails.data.gram_strain_default_value,
            swt_is_organism: GetCultureTestHeadersDetails.data.is_organism_isolated,
            txt_organism_isolated_label: GetCultureTestHeadersDetails.data.organism_isolated_label,
            ddl_organism_default_value: GetCultureTestHeadersDetails.data.organism_isolated_default_value,
            swt_is_solid_media: GetCultureTestHeadersDetails.data.is_solid_media,
            ddl_solid_media_default_value: GetCultureTestHeadersDetails.data.solid_media_default_value,
            txt_solid_media_label: GetCultureTestHeadersDetails.data.solid_media_label,
            swt_is_liquid_media: GetCultureTestHeadersDetails.data.is_liquid_media,
            ddl_liquid_media_default_value: GetCultureTestHeadersDetails.data.liquid_media_default_value,
            txt_liquid_media_label: GetCultureTestHeadersDetails.data.liquid_media_label,
            swt_is_report_type: GetCultureTestHeadersDetails.data.is_report_type,
            report_type_default_value: GetCultureTestHeadersDetails.data.report_type_default_value,
            txt_report_type_label: GetCultureTestHeadersDetails.data.report_type_label,
            txt_special_instructions: GetCultureTestHeadersDetails.data.special_instruction,
            txt_description: GetCultureTestHeadersDetails.data.description,
            ddl_max_count: Number(GetCultureTestHeadersDetails.data.max_result_count),
            swt_culture_type: GetCultureTestHeadersDetails?.data?.culture_type,
            swt_status: GetCultureTestHeadersDetails.data.status,
        });

        setValue("swt_culture_type", GetCultureTestHeadersDetails.data.culture_type);

        console.log("swt_culture_type:", GetCultureTestHeadersDetails.data.culture_type);
    }
}, [GetCultureTestHeadersDetails, GetCultureTestHeadersDetails?.data]);

排查方向及解决建议

  • 检查数据类型一致性:确认后端返回的culture_type类型是否和表单组件期望的一致。比如如果后端返回的是字符串"true"/"false",而开关组件需要布尔值,就会导致显示异常。可以强制转换类型:
    swt_culture_type: Boolean(GetCultureTestHeadersDetails.data.culture_type),
    
  • 验证字段注册正确性:检查swt_culture_type字段是否在react-hook-form中正确注册,比如register("swt_culture_type")是否绑定到对应的UI组件上,有没有字段名拼写错误或者重复注册的情况。
  • 调整reset与setValue的执行逻辑:react-hook-form的reset是异步操作,后续单独调用的setValue可能被reset的异步逻辑覆盖。建议去掉单独的setValue调用,只通过reset设置字段值;如果需要后续操作,可使用reset的回调参数:
    reset(
      {
        // 其他字段保持不变
        swt_culture_type: Boolean(GetCultureTestHeadersDetails.data.culture_type),
      },
      {
        callback: () => {
          // 重置完成后的逻辑
        }
      }
    );
    
  • 检查组件默认值:查看swt_culture_type对应的UI组件(比如开关组件)是否硬编码了defaultValue={true},导致重置后被默认值覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:03:20