当前位置:   article > 正文

Ant Design Pro学习记录—ModalForm的使用(二)_fieldprops

fieldprops

目录

一、ModalForm高度设置

二、ModalForm点击阴影背景,不隐藏弹框

三、ProFormSelect联动

四、ProFormText关联赋值


一、ModalForm高度设置

在modalProps中设置bodyStyle:{height:500,overflowY:'scroll'}

效果如下:

二、ModalForm点击阴影背景,不隐藏弹框

同样在modalProps里面,配置maskClosable: false,就可以实现点击弹框外阴影,不隐藏弹框

  1. <ModalForm
  2. title="编辑公司"
  3. width="600px"
  4. visible={updateModalVisible}
  5. onVisibleChange={setUpdateModalVisible}
  6. onFinish={async (value) => {
  7. const success = await modify(value as API.CompanyItem);
  8. if (success) {
  9. setUpdateModalVisible(false);
  10. if (actionRef.current) {
  11. actionRef.current.reload();
  12. }
  13. }
  14. }}
  15. modalProps={{
  16. destroyOnClose: true,
  17. maskClosable: false,
  18. bodyStyle: { maxHeight: 500, overflowY: 'auto' },
  19. }}
  20. >

三、ProFormSelect联动

在ProFormSelect中,使用dependencies={['department_id']},其中department_id是需要的其他控件的值,使用时会在params中存在,看这个结构,如果需要多个控件的值应该也是支持的,暂时还没有尝试。

四、ProFormText关联赋值

业务需要,现在用到了文本框数据关联更新,但是没发现ProFormText有ProFormSelect相似的方法,但是也找到了实现方法。

第一种是使用ProFormDependency可以监听对应组件的值的变化,来实现ProFormText对应属性的变化,比如设置disabled的值,但仍然不能使用initialValue进行赋值,这里需要使用form进行动态赋值:theForm.setFieldValue('price_mode_name', res?.data?.price_mode_name);(form的使用此处不再多说)

  1. <ProFormDependency name={['project_id']}>
  2. {({ project_id }) => {
  3. theForm.setFieldValue('price_mode_name', null);
  4. if (project_id) {
  5. getPriceMode({
  6. project_id: project_id,
  7. }).then((res) => {
  8. console.log(res);
  9. if (res.code) {
  10. if (res?.data?.price_mode) {
  11. theForm.setFieldValue('price_mode_name', res?.data?.price_mode_name);
  12. }
  13. }
  14. });
  15. }
  16. return (
  17. <ProFormText
  18. width="xl"
  19. label="缴费模式"
  20. name="price_mode_name"
  21. disabled={project_id == 1 ? true :false}
  22. placeholder="缴费模式"
  23. />
  24. );
  25. }}
  26. </ProFormDependency>

如果是多个组件同时变化,也可以写多个组件

  1. <ProFormDependency name={['project_id']}>
  2. {({ project_id }) => {
  3. theForm.setFieldValue('price_mode_name', null);
  4. if (project_id) {
  5. getPriceMode({
  6. project_id: project_id,
  7. }).then((res) => {
  8. console.log(res);
  9. if (res.code) {
  10. if (res?.data?.price_mode) {
  11. theForm.setFieldValue('price_mode_name', res?.data?.price_mode_name);
  12. }
  13. }
  14. });
  15. }
  16. return (
  17. <div>
  18. <ProFormText
  19. width="xl"
  20. label="缴费模式"
  21. name="price_mode_name"
  22. disabled={project_id == 1 ? true :false}
  23. placeholder="缴费模式"
  24. />
  25. <ProFormText
  26. width="xl"
  27. label="缴费模式"
  28. name="price_mode_name1"
  29. disabled={project_id == 1 ? true :false}
  30. placeholder="缴费模式"
  31. />
  32. </div>
  33. );
  34. }}
  35. </ProFormDependency>

另一种方法是利用个别组件本身的onChange方法,使用form动态赋值,onChange方法是antd 组件的方法,在Pro里面使用时,需要在fieldProps里面调用

  1. <ProFormSelect
  2. width="xl"
  3. label="租赁时长"
  4. name="lease_time"
  5. options={[
  6. { label: '半年', value: 1 },
  7. { label: '一年', value: 2 },
  8. { label: '二年', value: 3 },
  9. { label: '三年', value: 4 },
  10. ]}
  11. rules={[
  12. {
  13. required: true,
  14. message: '请选择租赁时长',
  15. },
  16. ]}
  17. placeholder="请选择租赁时长"
  18. fieldProps={{
  19. onChange: async (value) => {
  20. const start_at1 = theForm.getFieldValue('start_at');
  21. theForm.setFieldValue('end_at', null);
  22. },
  23. }}
  24. />

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/115635
推荐阅读
相关标签
  

闽ICP备14008679号