Search code examples
reactjsantd

Antd: How to set nested field value using setFieldsValue


So I have a nested dynamic form, and I want to check its value using getFieldsValue. But whenever I do, it doesn't return me the values.

Using ant form hook, I create form list as <Form.List name="guests"> And assign the name to form input <FormInput name={[index, "firstName"]} label='FIRST NAME' />

I am trying to set its value using form.setFieldsValue({ [index, "firstName"]: [value]) but it doesnt works. Any suggestion regarding how to set path. Strictly need to use setFieldsValue


Solution

  • First get the guests array using form.getFieldValue (You can also use getFieldsValue(['guests'])?.guests). Then you can modify and set the value like this:

    let guests = form.getFieldValue('guests');
    
    // Check If `guests` exist & guest is an array & it's not empty
    if (guests && Array.isArray(guests) && guests.length) {
        // Check If firstName exists at that `index`
        if (guests[index]?.firstName) {
            guests[index].firstName = 'New Name';
            form.setFieldsValue({ names: guests });
        }
    }