AntD為Form的List設(shè)置默認值

有一種迷茫叫一臉懵逼,當(dāng)明白真相時恍然大悟。


恍然大悟

在ant design的官網(wǎng)中有一個demo叫動態(tài)增減表單項,非常方便的使用在動態(tài)增加選項的功能,但是并沒有提供設(shè)置默認值,而且在所有使用Form.List的demo中,也都沒有。!_! 一臉懵逼的表示,怎么展現(xiàn)默認值啊。

官網(wǎng)的DEMO

demo的樣例代碼為

<Form name="dynamic_form_nest_item" onFinish={onFinish} autoComplete="off" >
      <Form.List name="users">
        {(fields, { add, remove }) => {
          return (
            <div>
              {fields.map(field => (
                <Space key={field.key} style={{ display: 'flex', marginBottom: 8 }} align="start">
                  <Form.Item
                    {...field}
                    name={[field.name, 'startTime']}
                    fieldKey={[field.fieldKey, 'startTime']}
                    rules={[{ required: true, message: 'Missing first name' }]}
                  >
                    <Input placeholder="First Name" />
                  </Form.Item>
                  <Form.Item
                    {...field}
                    name={[field.name, 'endTime']}
                    fieldKey={[field.fieldKey, 'endTime']}
                    rules={[{ required: true, message: 'Missing last name' }]}
                  >
                    <Input placeholder="Last Name" />
                  </Form.Item>

                  <MinusCircleOutlined
                    onClick={() => {
                      remove(field.name);
                    }}
                  />
                </Space>
              ))}

              <Form.Item>
                <Button
                  type="dashed"
                  onClick={() => {
                    add();
                  }}
                  block
                >
                  <PlusOutlined /> Add field
                </Button>
              </Form.Item>
            </div>
          );
        }}
      </Form.List>

      <Form.Item>
        <Button type="primary" htmlType="submit">
          Submit
        </Button>
      </Form.Item>
    </Form>

展示的效果為


默認狀態(tài)

設(shè)置默認值

在antd的4.x版本中,在form層級上使用initialValues來設(shè)置默認值。

<Form name="dynamic_form_nest_item" onFinish={onFinish} autoComplete="off" initialValues={{"users": [{
        fieldKey: 0,
        isListField: true,
        key: 0,
        name: 0,
        endTime: "14:48",
        startTime: "14:48",
      }, {
        fieldKey: 1,
        isListField: true,
        key: 1,
        endTime: "14:48",
        startTime: "14:48",
        name: 1
      }]}}>

添加了initialValues并為name為“users”的Form.List設(shè)置默認值。完整的代碼為

<Form name="dynamic_form_nest_item" onFinish={onFinish} autoComplete="off" initialValues={{"users": [{
        fieldKey: 0,
        isListField: true,
        key: 0,
        name: 0,
        endTime: "14:48",
        startTime: "14:48",
      }, {
        fieldKey: 1,
        isListField: true,
        key: 1,
        endTime: "14:48",
        startTime: "14:48",
        name: 1
      }]}}>
      <Form.List name="users">
        {(fields, { add, remove }) => {
          return (
            <div>
              {fields.map(field => (
                <Space key={field.key} style={{ display: 'flex', marginBottom: 8 }} align="start">
                  <Form.Item
                    {...field}
                    name={[field.name, 'startTime']}
                    fieldKey={[field.fieldKey, 'startTime']}
                    rules={[{ required: true, message: 'Missing first name' }]}
                  >
                    <Input placeholder="First Name" />
                  </Form.Item>
                  <Form.Item
                    {...field}
                    name={[field.name, 'endTime']}
                    fieldKey={[field.fieldKey, 'last']}
                    rules={[{ required: true, message: 'Missing last name' }]}
                  >
                    <Input placeholder="Last Name" />
                  </Form.Item>

                  <MinusCircleOutlined
                    onClick={() => {
                      remove(field.name);
                    }}
                  />
                </Space>
              ))}

              <Form.Item>
                <Button
                  type="dashed"
                  onClick={() => {
                    add();
                  }}
                  block
                >
                  <PlusOutlined /> Add field
                </Button>
              </Form.Item>
            </div>
          );
        }}
      </Form.List>

      <Form.Item>
        <Button type="primary" htmlType="submit">
          Submit
        </Button>
      </Form.Item>
    </Form>

運行的默認效果為:


有默認值的效果

不明白時千難萬難,舉步維艱。當(dāng)看到真相的時候,一馬平川,神清氣爽?。?!

// END 喜歡秋天的風(fēng),帶著點點的果香

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容