2023-08-02 react antd的時間框用法

需求圖


import { Button, Form, Input, Select, Space, DatePicker, Checkbox } from 'antd';

import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';

import React from 'react';

const { RangePicker } = DatePicker;

const { Option } = Select;

const layout = {

? labelCol: { span: 8 },

? wrapperCol: { span: 16 },

};

const tailLayout = {

? wrapperCol: { offset: 8, span: 16 },

};

const initForm = {

? note: 'Hello world!',

? gender: 'male',

? timerList: [

? ? {

? ? ? timer: [],

? ? ? checkFlag: false

? ? }

? ]

}

const rules = {

? note: [{required: true}],

? gender: [{required: true}],

? customizeGender: [{required: true}],

? timerList: [{required: true}],

}

const App = () => {

? const [form] = Form.useForm();

? const onGenderChange = (value) => {

? ? switch (value) {

? ? ? case 'male':

? ? ? ? form.setFieldsValue({

? ? ? ? ? note: 'Hi, man!',

? ? ? ? });

? ? ? ? break;

? ? ? case 'female':

? ? ? ? form.setFieldsValue({

? ? ? ? ? note: 'Hi, lady!',

? ? ? ? });

? ? ? ? break;

? ? ? case 'other':

? ? ? ? form.setFieldsValue({

? ? ? ? ? note: 'Hi there!',

? ? ? ? });

? ? ? ? break;

? ? ? default:

? ? }

? };

? const onFinish = (values) => {

? ? console.log(values);

? };

? const onReset = () => {

? ? form.resetFields();

? };

? const onFill = () => {

? ? form.setFieldsValue(initForm);

? };

? const add = () => {

? ? const list = form.getFieldValue('timerList');

? ? form.setFieldsValue({

? ? ? timerList: [...list, { timer: [], checkFlag: false }]

? ? })

? }

? const remove = key => {

? ? const list = form.getFieldValue('timerList');

? ? form.setFieldsValue({

? ? ? timerList: list.filter((_, index) => index != key)

? ? })

? }

? const setCheck = () => {

? ? // 可以在這處理默認(rèn)邏輯 比如你那設(shè)置時間啥的

? ? form.setFieldsValue(form.getFieldsValue(true))

? }

? return (

? ? <Form

? ? ? {...layout}

? ? ? form={form}

? ? ? name="control-hooks"

? ? ? onFinish={onFinish}

? ? ? style={{maxWidth: 600,}}

? ? ? initialValues={

? ? ? ? initForm

? ? ? }

? ? >

? ? ? <Form.Item name="note" label="Note" rules={rules.note}>

? ? ? ? <Input />

? ? ? </Form.Item>

? ? ? <Form.Item name="gender" label="Gender" rules={rules.gender}>

? ? ? ? <Select placeholder="Select a option and change input text above" onChange={onGenderChange} allowClear>

? ? ? ? ? <Option value="male">male</Option>

? ? ? ? ? <Option value="female">female</Option>

? ? ? ? ? <Option value="other">other</Option>

? ? ? ? </Select>

? ? ? </Form.Item>

? ? ? <Form.Item noStyle shouldUpdate={(prevValues, currentValues) => prevValues.gender !== currentValues.gender}>

? ? ? ? {({ getFieldValue }) =>

? ? ? ? ? getFieldValue('gender') === 'other' ? (

? ? ? ? ? ? <Form.Item name="customizeGender" label="Customize Gender" rules={rules.customizeGender}>

? ? ? ? ? ? ? <Input />

? ? ? ? ? ? </Form.Item>

? ? ? ? ? ) : null

? ? ? ? }

? ? ? </Form.Item>

? ? ? <Form.List name="timerList" >

? ? ? ? {(fields) => (

? ? ? ? ? <>

? ? ? ? ? ? {fields.map(({ key, name, ...restField }) => (

? ? ? ? ? ? ? <Space key={key} style={{ display: 'flex', marginBottom: 8 }} align="baseline">

? ? ? ? ? ? ? ? <Form.Item

? ? ? ? ? ? ? ? ? {...restField}

? ? ? ? ? ? ? ? ? name={[name, 'timer']}

? ? ? ? ? ? ? ? ? rules={[{ required: true, message: 'Missing timer name' }]}

? ? ? ? ? ? ? ? >

? ? ? ? ? ? ? ? ? <RangePicker />

? ? ? ? ? ? ? ? </Form.Item>

? ? ? ? ? ? ? ? <Form.Item

? ? ? ? ? ? ? ? ? {...restField}

? ? ? ? ? ? ? ? ? name={[name, 'checkFlag']}

? ? ? ? ? ? ? ? ? valuePropName="checked"

? ? ? ? ? ? ? ? ? rules={[{ required: true, message: 'Missing checkFlag name' }]}

? ? ? ? ? ? ? ? >

? ? ? ? ? ? ? ? ? <Checkbox onChange={setCheck} disabled={form.getFieldValue('timerList').some(({ checkFlag }) => checkFlag == true )}>Checkbox</Checkbox>

? ? ? ? ? ? ? ? </Form.Item>

? ? ? ? ? ? ? ? <Button onClick={() => remove(key)}>刪除</Button>

? ? ? ? ? ? ? ? <Button onClick={() => add()} block icon={<PlusOutlined />}>添加</Button>

? ? ? ? ? ? ? </Space>

? ? ? ? ? ? ))}

? ? ? ? ? </>

? ? ? ? )}

? ? ? </Form.List>

? ? ? <Form.Item {...tailLayout}>

? ? ? ? <Button type="primary" htmlType="submit"> Submit </Button>

? ? ? ? <Button htmlType="button" onClick={onReset}> Reset </Button>

? ? ? ? <Button type="link" htmlType="button" onClick={onFill}> Fill form </Button>

? ? ? </Form.Item>

? ? </Form>

? );

};

export default App;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子推掸,更是在濱河造成了極大的恐慌豁翎,老刑警劉巖胰默,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異糠睡,居然都是意外死亡惰匙,警方通過查閱死者的電腦和手機既峡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門车伞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人约啊,你說我怎么就攤上這事邑遏。” “怎么了恰矩?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵无宿,是天一觀的道長。 經(jīng)常有香客問我枢里,道長孽鸡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任栏豺,我火速辦了婚禮彬碱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奥洼。我一直安慰自己巷疼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布灵奖。 她就那樣靜靜地躺著嚼沿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓷患。 梳的紋絲不亂的頭發(fā)上骡尽,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音擅编,去河邊找鬼攀细。 笑死,一個胖子當(dāng)著我的面吹牛爱态,可吹牛的內(nèi)容都是我干的谭贪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼锦担,長吁一口氣:“原來是場噩夢啊……” “哼俭识!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洞渔,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤套媚,失蹤者是張志新(化名)和其女友劉穎理盆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凑阶,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡猿规,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宙橱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姨俩。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖师郑,靈堂內(nèi)的尸體忽然破棺而出环葵,到底是詐尸還是另有隱情,我是刑警寧澤宝冕,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布张遭,位于F島的核電站,受9級特大地震影響地梨,放射性物質(zhì)發(fā)生泄漏菊卷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一宝剖、第九天 我趴在偏房一處隱蔽的房頂上張望洁闰。 院中可真熱鬧,春花似錦万细、人聲如沸扑眉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腰素。三九已至,卻和暖如春雪营,著一層夾襖步出監(jiān)牢的瞬間弓千,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工卓缰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留计呈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓征唬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茁彭。 傳聞我的和親對象是個殘疾皇子总寒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容