Redux-saga から currentUser データを antd フォームに渡しています。名前、メール、電話番号、紹介が初期値としてフォームに渡されます。私がやりたいのは、初期値が変更された場合にフォームを PUT リクエストとして DB に送信することです。これが私のコードです。
import React from 'react';
import {createStructuredSelector} from 'reselect';
import { connect } from 'react-redux';
import { selectCurrentUser } from '../../redux/user/user.selector';
import { Form, Input, Button } from 'antd';
import './profile_form.styles.css'
/* eslint-disable no-template-curly-in-string */
const ProfileForm = ({currentUser}) => {
const {name, email} = currentUser
const onFinish = values => {
console.log(values);
};
const layout = {
labelCol: {
span: 7,
},
wrapperCol: {
span: 15,
},
};
return (
<Form className='profile-form' {...layout}
onFinish={onFinish}
initialValues={{ firstname: name, lastname: name, email: email }}
>
<Form.Item
name='firstname'
label="First Name"
>
<Input />
</Form.Item>
<Form.Item
name= 'lastname'
label="Last Name"
>
<Input value={name}/>
</Form.Item>
<Form.Item
name='email'
label="Email"
>
<Input value={email} />
</Form.Item>
<Form.Item name= 'phonenumber' label="Phone Number"
>
<Input />
</Form.Item>
<Form.Item name='introduction' label="Introduction"
>
<Input.TextArea />
</Form.Item>
<Form.Item wrapperCol={{ ...layout.wrapperCol, offset: 8 }}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};
const mapStateToProps = createStructuredSelector({
currentUser:selectCurrentUser
})
export default connect(mapStateToProps) (ProfileForm);
antd api で「onValuesChange」を見つけましたが、どのように使用すればよいのかわかりません。
ベストアンサー1
フックを使用している場合は、次のコードで useEffect を追加できます。
useEffect(() => {
form.setFieldsValue(defaultValues)
}, [form, defaultValues])
最初にフォームの値を定義することを忘れないでください:
const [form] = Form.useForm()
このフォーム インスタンスを Form コンポーネントに渡すことを忘れないでください。
<Form
form={form}
layout="vertical"
name="form-name"
initialValues={defaultValues}
onFinish={submitHandler}
>
このフォームでは、コンポーネントがレンダリングされるときに defaultValues を更新します。クラスを使用している場合は、componentDidUpdate ライフサイクル メソッド内にコードを配置できます。
よろしく