Reputation: 31683
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
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