ant-design / pro-components

🏆 Use Ant Design like a Pro!
https://pro-components.antdigital.dev
MIT License
4.3k stars 1.36k forks source link

🧐[问题] 在ProForm 里 怎么可以在不修改的情况下, 也可以取到 {lable:"dispaly name", value:123} #8446

Open jasonwang1109 opened 5 months ago

jasonwang1109 commented 5 months ago

🧐 问题描述

在ProForm 里 怎么初始化 ProFormSelect 组件的 lable and value, name 属性只会取select 显示的值,当不修改直接获取值时,value 是lable 的值,怎么可以在不修改的情况下,也可以取到 {lable:"dispaly name", value:123}

💻 示例代码

let initialValues = { display_name:"dispaly name", display_id:"123", }

🚑 其他信息

chenshuai2144 commented 5 months ago

有个配置叫labelinvalue 你看一下

jasonwang1109 commented 5 months ago

有个配置叫labelinvalue 你看一下

当select 里的值不修改的时候, labelinvalue 不起效果,transform={(value, namePath, allValues)=>{} 里的value 是label ,只有下拉框里选一个值, value 才会变成{lable:'', value:''},这个属性才会有效果

fnoopv commented 5 months ago

https://codesandbox.io/p/sandbox/modal-biao-dan-forked-25dgx2

试了一下,没问题啊,不重新选择的情况下, select字段transform打印的是{label: '',value''},最后提交打印的也是{label: '',value''}

jasonwang1109 commented 5 months ago

https://codesandbox.io/p/sandbox/modal-biao-dan-forked-25dgx2

试了一下,没问题啊,不重新选择的情况下, select字段transform打印的是{label: '',value''},最后提交打印的也是{label: '',value''}

因为你初始化的时候,给的结构里包含了lable, value select: { label: "测试1", value: "test1", },

我服务端返回的结构是 let initialValues = { other:"", display_name:"dispaly name", display_id:"123", }, select 的 name 等于 display_name,display_id 等于 select value,

服务端不能直接提供这样的结构 select:{ label: "dispaly name", value: "123", }

不知道客户端是否有简单方式可以处理这种情况?

fnoopv commented 5 months ago

我能想到的解决颁发:

  1. 获取到后端返回值后重新整理一下,再赋值给initValues
  2. 还是目前这样赋值给initValues,然后valueEnme或者request给组件提供包含当前value的选择项,这样也没问题