ant-design / pro-components

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

紧急!!!🐛[BUG]renderFormItem重新渲染下拉框内容,即便value/onchange也无法获取值 #111

Closed haoyinag closed 4 years ago

haoyinag commented 4 years ago

🐛 bug 描述

研发环境能拿到值,本地打的包放到服务器也没问题,但是走了Jenkins之后拿不到值了

📷 复现步骤

1、右边下拉选择条件 2、点击查询 3、本地环境和本地的dist都能正常拿到字段值,Jenkins打包拿不到

💻 复现代码

{
      // 配送方/分配状态/发起分拣/工具/是否拆单
      title: (
        <Select
          defaultValue={filterPrefixTypes?.deliveryStatus_Dispatch}
          onSelect={(val) =>
            onFilterPrefixSelect(val, "deliveryStatus_Dispatch")
          }
        >
          {deliveryStatus_Dispatch.map((item: any) => (
            <Option key={item.value} value={item.value}>
              <Tooltip title={item.label}>
                <span>{item.label}</span>
              </Tooltip>
            </Option>
          ))}
        </Select>
      ),
      dataIndex: filterPrefixTypes?.deliveryStatus_Dispatch,
      hideInTable: true,
      width: 5 * 10,
      renderFormItem: (_, { type, defaultRender, ...rest }, form) => {
        console.log(type, defaultRender);

        const deliveryType = filterPrefixTypes?.deliveryStatus_Dispatch;
        let deliveryStatus_Dispatch_List: any =
          deliveryType === "blnDelivery"
            ? DISPATCH_STATUS
            : deliveryType === "vehicle"
            ? TRANSPORTATION_MAP
            : DISPATCH_COMPANY;
        if (
          deliveryType === "vehicle" ||
          deliveryType === "blnDelivery" ||
          deliveryType === "dispatchingCompany"
        ) {
          return (
            <Select>
              {Object.keys(deliveryStatus_Dispatch_List).map((key: any) => {
                return (
                  <Option key={key} value={key}>
                    {deliveryStatus_Dispatch_List[key]}
                  </Option>
                );
              })}
            </Select>
          );
        } else {
          if (deliveryType === "pickState") {
            deliveryStatus_Dispatch_List = DISPATCH_PICKSTATE;
          } else {
            deliveryStatus_Dispatch_List = DISPATCH_SPLIT;
          }
          return (
            <Select
             // 用了value和onchange也不行
            //  value={deliveryDispatchValue[deliveryType]}
            //  onChange={(val) =>
            //    setDeliveryDispatchValue({
            //      [deliveryType]: val,
             //   })
              }
            >
              {deliveryStatus_Dispatch_List.map((item: any) => (
                <Option key={item.id} value={item.id}>
                  {item.name}
                </Option>
              ))}
            </Select>
          );
        }
      },
    }

© 版本信息

 "@amap/amap-jsapi-types": "^0.0.4",
    "@ant-design/pro-layout": "^5.0.9",
    "@ant-design/pro-table": "^2.2.7",
    "@types/jest": "^25.2.1",
    "@types/react": "^16.9.34",
    "@umijs/hooks": "^1.9.2",
    "@umijs/preset-react": "1.x",
    "@umijs/test": "^3.1.1",
    "antd-dayjs-webpack-plugin": "^1.0.0",
    "cross-env": "^7.0.2",
    "html2canvas": "^1.0.0-rc.5",
    "lint-staged": "^10.0.7",
    "postcss-px-to-viewport": "^1.1.1",
    "prettier": "^2.0.5",
    "react": "^16.12.0",
    "react-amap": "^1.2.8",
    "react-dom": "^16.12.0",
    "stylus": "^0.54.7",
    "stylus-loader": "^3.0.2",
    "ts-md5": "^1.2.7",
    "typescript": "^3.8.3",
    "umi": "^3.1.1",
    "yorkie": "^2.0.0"

🚑 其他信息

https://upload-images.jianshu.io/upload_images/5644085-bf7d7c8a065f639f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

haoyinag commented 4 years ago

我自己解决吧 用valueEnum解决了。 不知道上面代码有问题还是封装的缘故

chenshuai2144 commented 4 years ago

<Select {....rest}>

value 和 onchange 必须要绑定的