
点击查询如果在该组件去进行axios请求,这样再该组件下获得返回的列表还需要传回父组件,父组件再把列表发给下面的table组件,不太方便。
解决方案:将用户的选择项传给顶级组件index.tsx,再在顶级组件根据筛选项去进行请求,这样只需要父组件把列表发给下面的table组件渲染即可。
查询按钮是index的子组件,但是请求是放在index里面去请求的(也是为了方便分发给下面的子组件),但是点击按钮才去进行请求,可是顶级组件如何知道是否点击按钮?
解决方案:设置一个全局redux值:inquireState,点击按钮就将该值从false变成true,或者从true变成false。一旦这个值发生改变,在顶级组件的useEffect就去执行请求
- useEffect(()=>{
- console.log('查询');
- getFilteredTableData()
- },[inquireState])
-
-
- // 点击查询按钮,按照条件进行查询
- function getFilteredTableData() {
- const p4 = axios.post('/api/project/project', {
- action: "getProjectInfoSearch",
- filterList: topFilterFieldValue
- }).then(
- response => {
- console.log(response.data.retlist);
- // setTableList(response.data.retlist)
- return response.data.retlist
- },
- error => {
- message.error('产线列表请求失败,请刷新重试!');
- return []
- })
- }
进入页面时首次加载需要用useEffect,这边需要注意useEffect的第二个参数,不然会导致一旦状态更新,组件将重新呈现,这将再次触发useEffect。可能导致一直执行里面的函数。
弹出框的确认按钮是作为footer的,无法拿到Modal内部表单的填写项
解决方案:
- const onFinish = async () => {
- const values = await form.validateFields();
- //values
- console.log("values", values);
- };
记得在表单的参数值添加:
- <Form
- name="dynamic_form_nest_item"
- onFinish={onFinish}
- autoComplete="on"
- //绑定form
- form={form}
- >
还有:需要通过 Form.useForm 对表单数据域进行交互
const [form] = Form.useForm()
Modal直接设置宽高不是很合适,因为一个页面中可能有多个Modal。但是他们的宽高不一定一致,需要一个个去设置不同的宽和高,而且我试了一下样式不生效,只有在app.less设置全局样式,仍旧没有解决设置不同的宽和高的问题
解决方案:Modal不要直接用样式去设置宽高,在Modal内部有个参数:width可以设置宽度,高度会按照内容自动撑开,如果下面需要留白,可以给一个透明div:
marginTop: '10px',color:'#fff',opacity:'0' }}>提示:
- {
- // tooltip描述
- title:
- <div>有效任务
- <Tooltip placement='top' title='有效任务量,即剔除了异常或删除状态的任务后,调研项目中有效任务的总量'>
- <InfoCircleOutlined />
- Tooltip>
- div>,
- dataIndex: 'task_count_eff',
- key: 'task_count_eff',
-
- },
- {
- title: '已分配量',
- dataIndex: 'task_count_end',
- key: 'task_count_end',
- },
参考:
(5条消息) AntD的Table表头title加Icon图标和气泡提示Tooltip_莉兹Liz的博客-CSDN博客_antd table title
form.list实现动态增减表单项,但是没有默认显示一组或者多组数据
解决方案:AntD为Form的List设置默认值 - 简书 (jianshu.com)
useEffect详解_IT-CLASS的博客-CSDN博客_useeffect