pro-components
pro-components copied to clipboard
🐛[BUG]ProTable的onReset中dispatch调用dva model更改状态后,组件使用useUpdateEffect不会触发组件渲染
ProTable的onReset中dispatch调用dva model更改状态后,组件使用useUpdateEffect不会触发组件重新渲染
使用useUpdateEffect就不行,使用原生的useEffect就可以
下面是protable的关键配置。 尝试了自定义search的按钮,也不行。 但是放在protable的toolbar按钮中又可以。 真的太灵异了。
... return ( <ProTable<Analysis88888001Model, TypeAnalysis88888001Request> headerTitle={false} pagination={false} formRef={formRef} size="small" columns={columns} rowKey="key_id" manualRequest={true} request={(params) => { return query(params); }} rowClassName={(record) => { if (record.summary) { return styles.rowTotal; } }} scroll={{ x: 3000, y: scrollY }} options={uiSettings.proTable.options} search={{ ...uiSettings.proTable.search, filterType: 'query', onCollapse: () => { setScrollY(getTableScrollThis()); }, optionRender: ({searchText, resetText}, {form}) => [ <Button key="reset" onClick={() => { form?.resetFields(); // 重置表单 console.log(77777777777) const sfndValue = formRef.current?.getFieldValue('sfnd'); dispatch({ type: 'analysisProject/setSfnd', payload: { sfnd: isArray(sfndValue) ? sfndValue : [sfndValue] } }); // form?.submit();// 刷新表格 }} > {resetText} </Button>, <Button type="primary" key="search" onClick={() => { form?.submit(); }} > {searchText} </Button>, ], }} onReset={() => { const sfndValue = formRef.current?.getFieldValue('sfnd'); dispatch({ type: 'analysisProject/setSfnd', payload: { sfnd: isArray(sfndValue) ? sfndValue : [sfndValue] } }); }} form={{ size: 'small', ignoreRules: false, initialValues: formInitialValues, onValuesChange: (changedValues) => { if (changedValues.sfnd) { dispatch({ type: 'analysisProject/setSfnd', payload: { sfnd: isArray(changedValues.sfnd) ? changedValues.sfnd : [changedValues.sfnd] } }); } }, }} // toolBarRender={false} toolBarRender={() => { const ts = []; //@ts-ignore if (parent.report_check_login) { ts.push( <Button key="btn1" type="primary" onClick={(e) => { console.log(getToken()) }}>检查登录</Button> ); } //@ts-ignore if (parent.report_jump_to) { ts.push( <Button key="btn2" type="primary" onClick={(e) => { //@ts-ignore parent.report_jump_to("/AccountManage"); }}>跳转到账号管理</Button> ); } ts.push( <Button key="btn3" type="primary" onClick={(e) => { dispatch({ type: 'analysisProject/setSfnd', payload: { sfnd: ['N2016'] } }); }}>test</Button> ); return ts; }} /> );