ProComponents——ProForm,设置初始值后,点击【重置】按钮,值已清除但页面未更新

news/2024/11/15 11:00:51/文章来源:https://www.cnblogs.com/linjiangxian/p/18397929

 我的问题

umi+antd,使用ProComponents的QueryFilter表单进行列表筛选,首页有个进入列表的快捷跳转,会筛选列表状态(在线1/离线0)。

设置筛选状态初始值为1后,点击【重置】按钮:

1.打印初始值1已清除,但页面上未更新,仍显示筛选在线状态

2.点击2次【重置】按钮,页面才会更新

3.点击下拉框的清除按钮,再点击【重置】按钮,初始值会又变为1

 

首页:

...
<Link to={'/list?status=1'}>列表</Link>
...

 

列表:

 import { useSearchParams } from '@umijs/max'
 ...
const [params] = useSearchParams()
  const status = params.get('status') ? Number(params.get('status')) : undefined
...
<FilterForminitStatus={status}onSubmit={e => {setSearchParams({...searchParams,...e,})}} /> ...

 

 

筛选组件:

import { ProFormSelect, ProFormText, QueryFilter } from '@ant-design/pro-components'export type FilterFormType = {name?: stringstatus?: number
}
interface IFilterFormProps {initStatus?: numberonSubmit?: (e: FilterFormType) => voidonReset?: VoidFunction
}export default function FilterForm(props: IFilterFormProps) {const { initStatus, onSubmit, onReset } = propsreturn (<QueryFilter<FilterFormType>onFinish={async values => {onSubmit?.(values)}}onReset={onReset}initialValues={{ status: initStatus }}omitNil={false} // 默认为true,会自动清空 null 和 undefined 的数据。解决手动清除下拉框后,查询参数里下拉选项仍存在问题><ProFormText name='name' label='名称' placeholder='名称' /><ProFormSelectname='status'label='状态'options={[{ label: '离线', value: 0 },{ label: '在线', value: 1 },]}/></QueryFilter>
  )
}

 

 

原因

官网说明:https://ant.design/components/form-cn

 

解决方法

使用formRef、setFieldValue和resetFields

import {ProFormInstance,ProFormText,QueryFilter,
} from '@ant-design/pro-components'
import { useEffect, useRef } from 'react'export type FilterFormType = {name?: stringstatus?: number
}
interface IFilterFormProps {initStatus?: numberonSubmit?: (e: FilterFormType) => voidonReset?: VoidFunction
}export default function FilterForm(props: IFilterFormProps) {const { initStatus, onSubmit, onReset } = propsconst formRef = useRef<ProFormInstance>()useEffect(() => {formRef.current?.setFieldValue('status', initStatus)}, [])return (<QueryFilter<FilterFormType>formRef={formRef}onFinish={async values => {onSubmit?.(values)}}onReset={() => {onReset?.()formRef.current?.resetFields() // 解决重置后,页面上初始化值未清空问题
      }}labelWidth='auto'omitNil={false} // 默认为true,会自动清空 null 和 undefined 的数据。解决手动清除下拉框后,查询参数里下拉选项仍存在问题><ProFormText name='name' label='名称' placeholder='名称' /><ProFormSelectname='status'label='状态'options={[{ label: '离线', value: 0 },{ label: '在线', value: 1 },]}/></QueryFilter>
  )
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792612.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 中的关键字以及示例

Rust 中的关键字、保留字以及对应的示例1. 常见关键字as: 用于类型转换,例如将一个值从一种类型转换为另一种类型。let x: i32 = 42; let y: u8 = x as u8;break: 用于提前退出循环。for i in 0..10 {if i == 5 {break;} }const: 定义一个常量,常量的值在编译时就确定,不会在…

跨域——应对浏览器同源策略的一种方案

理解跨域,首先需要理解同源策略 (Same origin policy)。 何为源origin

LigerUI 中的 Grid (ligerGrid) 合并单元格

在网上搜索了很都都没有正确的方法实现 合并单元格, LigerGrid 不像 EasyUI 中的 Grid 可以直接 合并单元格。 我化了点时间,解决了, 就分享给大家, 我就不做详细的注释, 只有有一定基础的都可以看懂, 菜鸟就自己去补习吧。<div id="maingrid" style="…

linux系统下各种日志文件的介绍,查看,及日志服务配置

转载于https://zhuanlan.zhihu.com/p/298335887 ,侵权删! linux系统日志文件的详细介绍 日志文件的作用 日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件、程序错误等。. 日志文件…

金融保险行业ITSM案例分析报告

一、 项目背景 随着金融保险行业竞争的日益激烈以及信息技术的快速发展,数字化转型已成为企业发展的必由之路。然而,许多金融机构的信息中心仍然面临“重建设轻运维”的问题,即在信息化基础设施建设投入巨大之后,后续的运维管理却未能跟上步伐,导致信息化支撑力量薄弱。这…

maven项目中引入本地jar包配置

服务在本地可以正常运行,打包后放在服务器就无法运行,原来是引入的本地jar包maven没有打包上去 首先jar包是放在资源目录下的lib里pom文件在引入时指定jar包的路径,maven引入不会报错,但是打包后没有这个jar包<dependency><groupId>com.sun.jna.examples</g…

在stable diffussion中控制生成图片的光线Kj

合集 - AIGC(27)1.轻松复现一张AI图片04-222.Stable Diffusion中的常用术语解析04-233.Stable diffusion中这些重要的参数你一定要会用04-244.Stable Diffusion中的embedding04-255.怎么使用Stable diffusion中的models05-286.Stable Diffusion WebUI详细使用指南05-297.Stable…

NET程序内存泄漏处理技巧/调试内存泄漏教程

NET程序内存泄漏处理技巧/调试内存泄漏教程NET程序内存泄漏处理技巧/调试内存泄漏教程 什么是Dump(dmp)文件? Dump是计算机技术中的重要概念,用于将内存中的数据转储到外部存储设备中,以便在出现故障时进行排查和分析。Dump文件又叫内存转储文件或者叫内存快照文件。用于存…

代码随想录day52 || 图论搜索 岛屿数量,岛屿的最大面积

图遍历 dfs 深度优先搜索bfs 广度优先搜索200 岛屿数量(dfs) var dirPath = [][]int{{0, -1}, {1, 0}, {0, 1}, {-1, 0}} // 上, 右, 下, 左 var visited [][]bool func numIslands(grid [][]byte) int {// dfs 深度优先遍历,对于每一个节点,按照上下左右四个固定顺序遍…

采购订单的审批、撤回审批及拒绝 ME29N

原文链接:https://blog.csdn.net/z_x_xing_/article/details/90201003 前台操作,如下图:点击图中的批准按钮,逐级完成采购订单的审批节点。2.查看表中数据发布状态——对应前台界面当前已审批的节点BAPI使用 CALL FUNCTION BAPI_PO_RELEASE EXPORTING PURCHASEORDE…

会话状态在此上下文中不可用——解决方法

原文链接:https://www.cnblogs.com/lczblog/p/3596481.html问题原因分析:项目中包含各种类型的文件 访问.html的时候无法获取Session 解决办法:在上图中出现错误之前添加判断 当访问的是.aspx类型的文件时在访问Session if (!application.Context.Handler.ToString().EndsWi…