antd-Select组件遇到的小坑

 

      // 接口来源数据
      const treeDataSource = [
    {
      title: '文件导入',
      value: '0-0',
      key: '0-0'
    },
    {
      title: '平台导入',
      value: '0-1',
      key: '0-1'
    },
  ]

 

         
                <Form.Item
                  label="接口来源"
                  name="username"
                  rules={[{ required: true, message: '请选择接口来源' }]}
                  colon={false}
                >
                  {
                    importData == 'AGM' ?
                      <Select defaultValue='0-0' disabled >
                        <Option value="0-0">文件导入111</Option>
                        <Option value="0-1">文件导入222</Option>
                      </Select> : <TreeSelect
                        getPopupContainer={triggerNode => triggerNode.parentElement}
                        treeData={treeDataSource}
                        value={value}
                        onChange={onChangeProps}
                        placeholder={'请选择'}
                        className={styles.treeSelect}
                        treeDefaultExpandAll
                        allowClear
                      >
                      </TreeSelect>
                  }
                </Form.Item>

问题描述 :

当选择dsm时,接口来源中选择'0-0'(文件导入),再切回agm,然后再切换回dsm,接口来源中文件导入处于选中状态,下拉选中正常。但是当选择dsm时,接口来源中选择'0-1'(平台导入),再切回agm,接口来源框中显示文件导入111,然后再切换回dsm,接口来源中平台导入不处于选中状态。

产生原因:就是在接口来源选中一次之后,就会自动给form表单的值value改变,因此就会出现当接口来源中选中平台导入(0-1)之后,切换回agm,接口来源回显的是文件导入222,而不是文件导入111。

解决方法:当选中agm之后,设置选中的接口来源对应的form的值(即回到初始状态)

/**
   * 导入类型
   */
  const onImportType = (value: any, label: any) => {
    console.log(value, label);
    setImportData(label[0])
    console.log(label[0])

    // console.log(value)

    console.log(editForm.getFieldValue("username"),88888)
    if (label[0] == "AGM") {
      editForm.setFieldsValue({
        username: '0-0'
      })
    }
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值