Vencovsky
Vencovsky

Reputation: 31683

How to listen for changes on formik field with nested values?

What I want to do is when certain field from formik change, do something.

e.g.

useEffect(() => {
    // do something
}, [values.someField])

But if I have a dynamic name value ( from props ), that can be anything (e.g. field.name, field[0].otherField, level1.level2.level3) how can I make this effect?

const MyComponent = ({ name }) => {
    const { values } = useFormikContext()

    useEffect(() => {
        // do something
    }, [/* what to put here? */]) 

    // ...
}

Upvotes: 5

Views: 11788

Answers (1)

Vencovsky
Vencovsky

Reputation: 31683

I figure it out, I need to use getIn from formik

import { useFormikContext, getIn } from `formik`

const MyComponent = ({ name }) => {
    const { values } = useFormikContext()

    const fieldValue = getIn(values, name)

    useEffect(() => {
        // do something when some field in the form changes
    }, [fieldValue]) 

    // ...
}

Upvotes: 9

Related Questions