在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ Antd的form組件無(wú)法重置,正確顯示一條記錄的值

Antd的form組件無(wú)法重置,正確顯示一條記錄的值

如圖:每一條記錄點(diǎn)擊編輯的時(shí)候form顯示相應(yīng)的記錄的值,我的做法是點(diǎn)擊編輯獲取記錄的record存在state.formData中,如何把state.formData當(dāng)做props參數(shù)傳遞給form組件,form組件的初始值從this.props.formData里面取。

圖片描述

問(wèn)題是:我如果只點(diǎn)擊編輯然后關(guān)掉,再點(diǎn)擊其他記錄的編輯顯示是沒(méi)有問(wèn)題的。但是只要我點(diǎn)擊編輯,修改了input的值,關(guān)閉以后。再點(diǎn)擊其他任何記錄,form顯示的都是剛剛修改了然后關(guān)閉了的記錄。

比如:選擇某一條修改兩處為test之后,沒(méi)有點(diǎn)擊確定直接點(diǎn)擊關(guān)閉。
圖片描述

如何點(diǎn)擊其他所有記錄都變成了這樣:
圖片描述

我在form的render函數(shù)下面打印了接受到的props.formData參數(shù)是沒(méi)有問(wèn)題的,是記錄傳遞過(guò)來(lái)的值,但是顯示的時(shí)候有問(wèn)題:
這個(gè)是整個(gè)form的代碼

import React from 'react';
import { Form , Input , Button } from 'antd';

const FormItem = Form.Item;
const formItemLayout = {
    labelCol : {span : 5},
    wrapperCol : {span : 15} 
};
class FormLayout extends React.Component{
    handleSubmit(e){
        e.preventDefault();
        this.props.comfirmHandle(this.props.form.getFieldsValue()); //獲取當(dāng)前表單數(shù)據(jù)并當(dāng)做回調(diào)函數(shù)的參數(shù)傳遞給父組件
    }

    // componentWillReceiveProps(nextProps){
    //     if(!nextProps.visible){
    //         this.props.form.resetFeilds();
    //     }
    // }

    render(){
        const { getFieldDecorator ,getFeildsValue } = this.props.form;
        const { record } = this.props;

        return (
            <Form onSubmit= {this.handleSubmit.bind(this)}>
                <FormItem label="編號(hào)" {...formItemLayout}>
                    {getFieldDecorator('id', { 
                        rules: [{ required: true, message: '請(qǐng)輸入書(shū)籍編號(hào)!' }],
                        initialValue : record ? record.id : ""
                    })(
                        <Input placeholder="請(qǐng)輸入書(shū)籍編號(hào)"/>
                    )}
                </FormItem>
                <FormItem label="名稱" {...formItemLayout}>
                    {getFieldDecorator('name', { 
                        rules: [{ required: true, message: '請(qǐng)輸入書(shū)籍名稱!' }],
                        initialValue : record ? record.name : ""
                    })(
                        <Input placeholder="請(qǐng)輸入書(shū)籍名稱"/>
                    )}
                </FormItem>
                <FormItem label="價(jià)格"  {...formItemLayout}>
                    {getFieldDecorator('price', {
                        rules: [{ required: true, message: '請(qǐng)輸入價(jià)格!' }],
                        initialValue : record ?  record.price : ""
                    })(
                        <Input placeholder="請(qǐng)輸入價(jià)格"/>
                    )}
                </FormItem>
                <FormItem label="借閱者編號(hào)"  {...formItemLayout}>
                    {getFieldDecorator('owner_id', { 
                        rules: [{ required: true, message: '請(qǐng)輸入借閱者編號(hào)!' }],
                        initialValue : record ? record.owner_id :""
                    })(
                        <Input placeholder="請(qǐng)輸入借閱者編號(hào)"/>
                    )}
                </FormItem>
                <FormItem wrapperCol={{ span: 10, offset: 10 }}>
                    <Button type="primary" htmlType="submit">
                        確定
                    </Button>
                </FormItem>
            </Form>
        );
    }
}

export default FormLayout = Form.create()(FormLayout);
回答
編輯回答
蟲(chóng)児飛

每次打開(kāi)Modal的時(shí)候,resetFields一下就好了。

2018年2月27日 16:45
編輯回答
敢試

瀉藥,大概看了一下

  1. 不點(diǎn)確定關(guān)閉窗口時(shí) (onCancel),你應(yīng)該清空 state.formData 里的值,或者調(diào) form.resetFields()
  2. 可以給 Modal 加個(gè)參數(shù) destroyOnClose
2017年10月8日 10:18