我在我的项目中使用 Formik,我的设置如下所示:
|-MenuModal
|--MenuEdit
|---MenuEditForm
Run Code Online (Sandbox Code Playgroud)
和MenuModal
的父级在哪里。该组件负责返回 Formik 表单,但我在它的 parent 中调用 submit ,它稍后通过 React 的 refs运行提交函数。乱?是的!MenuEdit
MenuEditForm
MenuEditForm
MenuModal
MenuEdit
现在我想使用的状态和回调函数来获取Formiksvalues
从MenuEditForm
到MenuEdit
。但由于我没有使用 Formiks 自己的onSubmit
:
<Formik
initialValues={menu}
validationSchema={validationSchema}
onSubmit={values => console.log('values', values)} // 'values' is undefined
...
Run Code Online (Sandbox Code Playgroud)
我的values
遗嘱是未定义的,我无法让我的提交功能通过。
所以我想知道如何访问我的values
inMenuEditForm
以便我以后可以将它传递给MenuEdit
并完成我的提交功能。
谢谢阅读。
Jor*_*els 20
要访问 formik 组件之外的值,您可以使用钩子执行此操作:
const formRef = useRef();
return (
<Formik
...
innerRef={formRef}
>
...
</Formik>
Run Code Online (Sandbox Code Playgroud)
然后,可以在组件之外的任何地方使用 formRef.current.values 访问值。
您可以简单地传递一个函数来接收来自子组件的值。
例如:
菜单模式:
const MenuModal = () => {
const [values, setvalues] = useState();
return (
...
<MenuEdit values={values} onFormSubmit={(values) => setvalues(values)} />
...
);
}
Run Code Online (Sandbox Code Playgroud)
菜单编辑:
const MenuEdit = ({values, onFormSubmit}) => {
// do something with values
return (
...
<MenuEditForm onFormSubmit={onFormSubmit} />
...
)
...
}
Run Code Online (Sandbox Code Playgroud)
菜单编辑表单:
const MenuEditForm = ({onFormSubmit}) => (
...
<Formik
initialValues={menu}
validationSchema={validationSchema}
onSubmit={values => onFormSubmit(values)}
...
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9648 次 |
最近记录: |