欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React如何利用Antd的Form組件實現表單功能詳解

 更新時間:2021年04月14日 10:55:06   作者:GuanJdoJ  
這篇文章主要給大家介紹了關于React如何利用Antd的Form組件實現表單功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、構造組件

1、表單一定會包含表單域,表單域可以是輸入控件,標準表單域,標簽,下拉菜單,文本域等。

這里先引用了封裝的表單域 <Form.Item />

2、使用Form.create處理后的表單具有自動收集數據并校驗的功能,但如果不需要這個功能,或者默認的行為無法滿足業(yè)務需求,可以選擇不使用Form.create并自行處理數據

經過Form.create()包裝過的組件會自帶this.props.form屬性,this.props.form提供了很多API來處理數據,如getFieldDecorator——用于和表單進行雙向綁定等,詳細參加Antd官方文檔:點擊此處查看

先展示表單樣式:

import React from 'react';
import {Form, Table, Button, Select, Input, DatePicker} from 'antd';
 
const FormItem = Form.Item;
const Option = Select.Option;
const {RangePicker} = DatePicker;//獲取日期選擇控件中的日期范圍控件
 
class UserManage extends React.Component {
  render() {
    const columns = [
      {
        title: '聯系人',
        dataIndex: 'userName',
        key: 'userName',
      }, {
        title: '手機號',
        dataIndex: 'mobile',
        key: 'mobile',
      }, {
        title: '公司名稱',
        dataIndex: 'companyName',
        key: 'companyName',
      }, {
        title: '最近活躍時間',
        dataIndex: 'lastOnlineTime',
        key: 'lastOnlineTime',
      }, {
        title: '禁言狀態(tài)',
        dataIndex: 'status',
        key: 'status',
      },
    ];
 
    return (
      <div>
        <Form layout="inline" style={{marginBottom: '10px'}}>
          <FormItem label="最近活躍時間">
            <RangePicker style={{width: '255px'}}/>
          </FormItem>
          <FormItem label="用戶">
            <Input type="text" placeholder="公司名稱、手機號" style={{width: '155px'}}/>
          </FormItem>
          <FormItem label="禁言狀態(tài)">
            <Select defaultValue="全部" style={{width: '155px'}}>
              <Option value="全部">全部</Option>
              <Option value="是">是</Option>
              <Option value="否">否</Option>
            </Select>
          </FormItem>
          <Button type="primary" style={{marginTop: '3px', marginRight: '3px'}}>查詢</Button>
          <Button style={{marginTop: '3px'}}>重置</Button>
        </Form>
        <Table
          columns={columns}
        />
      </div>
    )
  }
}
 
export default Form.create()(UserManage)

colums是Table組件的API,columns和Column組件使用相同的API:

dataIndex:列數據在數據項中對應的 key,支持a.b.c的嵌套寫法

key:React 需要的 key,如果已經設置了唯一的dataIndex,可以忽略這個屬性

二、使用getFieldDecorator(id, options) 進行表單交互

1、現在的問題就是如何獲取各種查詢條件的數據,所以先改寫render()里面的代碼,getFieldDecorator用于和表單進行雙向綁定:

...
render(){
    const {form} = this.props;
    const {getFieldDecorator} = form;
...
    return (
      <div>
        <Form onSubmit={this.handleQuery} layout="inline" style={{marginBottom: '10px'}}>
          <FormItem label="最近活躍時間">
            {getFieldDecorator('lastOnlineTime')(<RangePicker style={{width: '255px'}}/>)}
          </FormItem>
          <FormItem label="用戶">
            {getFieldDecorator('userQueryLike')(<Input type="text" placeholder="公司名稱或手機號" style={{width: '155px'}}/>)}
          </FormItem>
          <FormItem label="禁言狀態(tài)">
            {getFieldDecorator('status', {initialValue: "全部"})(
            <Select  style={{width: '155px'}}>
              <Option value="0">全部</Option>
              <Option value="1">是</Option>
              <Option value="2">否</Option>
            </Select>)}
          </FormItem>
          <Button type="primary" htmlType="submit" style={{marginTop: '3px', marginRight: '3px'}}>查詢</Button>
          <Button style={{marginTop: '3px'}}>重置</Button>
        </Form>
        <Table
          columns={columns} /*dataSource={(從model取得的數據)}*/
        />
      </div>
    )
}
...

參數 說明 類型 默認值
id 必填輸入控件唯一標志。支持嵌套式的寫法。 string  
options.getValueFromEvent 可以把 onChange 的參數(如 event)轉化為控件的值 function(..args) reference
options.initialValue 子節(jié)點的初始值,類型、可選值均由子節(jié)點決定(注意:由于內部校驗時使用 === 判斷是否變化,建議使用變量緩存所需設置的值而非直接使用字面量))    
options.normalize 轉換默認的 value 給控件 function(value, prevValue, allValues): any -
options.rules 校驗規(guī)則,詳細參考Antd官方文檔 object[]  
options.trigger 收集子節(jié)點的值的時機 string 'onChange'
options.validateFirst 當某一規(guī)則校驗不通過時,是否停止剩下的規(guī)則的校驗 boolean false
options.validateTrigger 校驗子節(jié)點值的時機 string|string[] 'onChange'
options.valuePropName 子節(jié)點的值的屬性,如 Switch 的是 'checked' string 'value'

2、上面給了表單一個onSubmit事件,當表單提交時執(zhí)行handleQuery方法:

...
class UserManage extends React.Component {
  //表單查詢
  handleQuery = (e) => {
    if (e) e.preventDefault();
    const {dispatch, form} = this.props;
    form.validateFields((err, fieldsValue) => {
      if (err) return;
      //獲取時間范圍的值
      const rangeValue = fieldsValue['lastOnlineTime'];
      const userQueryLike = fieldsValue['userQueryLike'];
      //獲取查詢條件
      const values = {
        ...fieldsValue,
        "lastOnlineTime": (rangeValue && rangeValue.length > 1) ?
          ([rangeValue[0].format('YYYY-MM-DD'), rangeValue[1].format('YYYY-MM-DD')]) : null,
        "userQueryLike": userQueryLike ? userQueryLike.trim() : userQueryLike,
      };
      dispatch({
        type: "userManageModel/getUserList",
        payload: {
          values: values,
        }
      });
 
    });
  };
...
}
...

在此方法里又調用了form.validateFields校驗并獲取一組輸入域的值與Error,入參fieldsValue就是從表單的FormItem里取到的值,然后使用fieldsValue['lastOnlineTime']這種形式,通過與之前寫的getFieldDecorator('lastOnlineTime')產生映射,就獲取了單個輸入域的值。

總結一下,使用React的Form實現表單功能,必須要使用Form.create(組件),使包裝的組件帶有this.props.form屬性,才能調用form的getFieldDecorator和validateFields方法,getFieldDecorator中的id對應validateFields中的fieldsValue[''];而columns中的dateIndex對應的是從model取到數據json串的鍵名,這個要分清

除了這種方法,還有兩種實現獲取input輸入框的值然后提交的方法,可以看這篇文章:React獲取input的值并提交的兩種方法

總結

到此這篇關于React如何利用Antd的Form組件實現表單功能詳解的文章就介紹到這了,更多相關React用Form組件實現表單內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • react-router?重新加回跳轉攔截功能詳解

    react-router?重新加回跳轉攔截功能詳解

    這篇文章主要為大家介紹了react-router?重新加回跳轉攔截功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • React的Props、生命周期詳解

    React的Props、生命周期詳解

    “Props” 是 React 中用于傳遞數據給組件的一種機制,通常作為組件的參數進行傳遞,在 React 中,props 是只讀的,意味著一旦將數據傳遞給組件的 props,組件就不能直接修改這些 props 的值,這篇文章主要介紹了React的Props、生命周期,需要的朋友可以參考下
    2024-06-06
  • 淺談React Native 傳參的幾種方式(小結)

    淺談React Native 傳參的幾種方式(小結)

    這篇文章主要介紹了淺談React Native 傳參的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 簡單分析React中的EffectList

    簡單分析React中的EffectList

    這篇文章主要簡單分析了React中的EffectList,幫助大家更好的理解和學習使用React進行前端開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • React實現模糊搜索和關鍵字高亮的示例代碼

    React實現模糊搜索和關鍵字高亮的示例代碼

    這篇文章主要為大家詳細介紹了React如何實現模糊搜索和關鍵字高亮的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • react中的虛擬dom和diff算法詳解

    react中的虛擬dom和diff算法詳解

    這篇文章主要介紹了react中的虛擬dom和diff算法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • React組件的用法概述

    React組件的用法概述

    React組件用來實現局部功能效果的代碼和資源的集合(html/css/js/image等等),這篇文章主要介紹了React組件的用法和理解,需要的朋友可以參考下
    2023-02-02
  • react實現頭部導航,選中狀態(tài)底部出現藍色條塊問題

    react實現頭部導航,選中狀態(tài)底部出現藍色條塊問題

    這篇文章主要介紹了react實現頭部導航,選中狀態(tài)底部出現藍色條塊問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React圖片壓縮上傳統(tǒng)一處理方式

    React圖片壓縮上傳統(tǒng)一處理方式

    這篇文章主要介紹了React圖片壓縮上傳統(tǒng)一處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • React Native中TabBarIOS的簡單使用方法示例

    React Native中TabBarIOS的簡單使用方法示例

    最近在學習過程中遇到了很多問題,TabBarIOS的使用就是一個,所以下面這篇文章主要給大家介紹了關于React Native中TabBarIOS簡單使用的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-10-10

最新評論