记录一个React中使用antd的多选Select在编辑时数据展示的问题

问题 \color{red}{问题} 问题

当我新增后,点击编辑按钮,多选框显示的是我数据的id,而不是我想要的内容text
多选框显示id,不显示值

代码 \color{#badc58}{代码} 代码

后台接口返回int数组,前台把数组的数据传递给FormItem,Select组件对FormItem的数据进行展示

 const roles =roleIds;//后台获取到的id列表
 //设置表单字段的值
 componentform.setFieldsValue({
     id: workbenchObject.blockInfo.id,
     componentName: workbenchObject.blockInfo.name,
     blockSettingJson: workbenchObject.blockInfo.setting,
     image: workbenchObject.blockInfo.imageName,
     systemUserRole: roles
 });
...
// 多选框
	  <Row gutter={24}>
        <Col span={24}>
          <Form.Item
            labelCol={{ span: 3 }}
            wrapperCol={{ span: 20 }}
            name="systemUserRole"
            label="允许查看的角色"
            rules={[{
               required: true,
               message: '请选择允许查看模块的角色!',
             }]}>
            <Select
              mode="multiple"
              allowClear
              style={{ width: '100%' }}
              placeholder="请选择允许查看模块的角色!"
            >
              {UserRole?.map(item => (
                <Option key={item.id}>{item.text}</Option>
              ))}
            </Select>
          </Form.Item>
        </Col>
      </Row>     

原因 \color{#354e6b}{原因} 原因

s e l e c t 选择器对数据的显示,是匹配到 s e l e c t 下拉框数据源中对应的 v a l u e 值时则会显示相应的 l a b e l ;若是没有匹配到,则显示的是该 v a l u e 。 \color{blue}{select选择器对数据的显示,是匹配到select下拉框数据源中对应的value值时则会显示相应的label;若是没有匹配到,则显示的是该value。} select选择器对数据的显示,是匹配到select下拉框数据源中对应的value值时则会显示相应的label;若是没有匹配到,则显示的是该value

而我的下拉框的选项的数据 U s e r R o l e 是一个 i d , t e x t 的对象, i d 的类型是一个字符串, i n t 数组里面的数据匹配不到选项数据,所以直接显示了数组的数据 \color{orange}{而我的下拉框的选项的数据UserRole是一个{id,text}的对象,id的类型是一个字符串,int数组里面的数据匹配不到选项数据,所以直接显示了数组的数据} 而我的下拉框的选项的数据UserRole是一个idtext的对象,id的类型是一个字符串,int数组里面的数据匹配不到选项数据,所以直接显示了数组的数据

解决 \color{#70a1ff}{解决} 解决

将 i n t 数组转为字符串数组,使其能够匹配到选项数据 \color{green}{将int数组转为字符串数组,使其能够匹配到选项数据} int数组转为字符串数组,使其能够匹配到选项数据

代码 \color{#badc58}{代码} 代码

	  const roles =roleIds.map(id => {return id.toString()});//将int数组转为string数组
          console.log(roles);
          componentform.setFieldsValue({
              id: workbenchObject.blockInfo.id,
              componentName: workbenchObject.blockInfo.name,
              blockSettingJson: workbenchObject.blockInfo.setting,
              image: workbenchObject.blockInfo.imageName,
              systemUserRole: roles
       });

成功 \color{green}{成功} 成功

成功展示预期数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值