antd-design Form,Select联合使用 placeholder 不起作用问题

antd-design Form,Select联合使用 placeholder 不起作用问题

起因

  • 最近在用antd写表单的时候遇到个问题:Form,Select组件一起使用时,设置Select组件的placeholder属性并没有起作用。如下图:

《antd-design Form,Select联合使用 placeholder 不起作用问题》
《antd-design Form,Select联合使用 placeholder 不起作用问题》
发现Select组件的placeholder属性并没有起作用。

排查

  • 对照官方文档看了一下官方的代码
<Form.Item
          label="Gender"
        >
          {getFieldDecorator('gender', {
            rules: [{ required: true, message: 'Please select your gender!' }],
          })(
            <Select
              placeholder="Select a option and change input text above"
              onChange={this.handleSelectChange}
            >
              <Option value="male">male</Option>
              <Option value="female">female</Option>
            </Select>
          )}
        </Form.Item>
  • 发现跟自己的代码唯一的区别就是我这里设置了这个表单项的initialValue属性,官方文档是这样讲的:

《antd-design Form,Select联合使用 placeholder 不起作用问题》

  • 对表单内的组件使用onChange合成事件不介意使用setState以及value为组件绑定值,介意使用initialValue设置初始化值。所以我这里写的也是没问题的。
  • 没办法了呀,遇到这种莫名其妙的问题只能去antd-github-issues去找有没有人提出过相同的问题了,搜了一下发现还真有!!!

《antd-design Form,Select联合使用 placeholder 不起作用问题》

  • 修改自己的代码之后
<Form.Item {...formItemLayout} label="证件类型">
            {getFieldDecorator('certType', {
              initialValue: publicAccount.certType ? publicAccount.certType : undefined,
              rules: [{ required: true, message: '请选择证件类型' }],
            })(
              <Select style={{ width: 280 }} placeholder="请选择证件类型" onChange={this.handleCertTypeChange}>
                <Option value="1">身份证</Option>
                <Option value="2">营业执照</Option>
              </Select>,
            )}
          </Form.Item>

《antd-design Form,Select联合使用 placeholder 不起作用问题》

补充:

    原文作者:w候人兮猗
    原文地址: https://segmentfault.com/a/1190000019634221
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞