- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 react 钩子(Hook)和 useRef 从父级调用子方法(请参见此处:Call child method from parent)
具体来说,我正在尝试从我的父组件调用位于我的子组件中的 formik submitForm 方法。我知道还有其他方法可以做到这一点(React Formik use submitForm outside <Formik />),但我真的很想使用 useRef。
const Auth1 = forwardRef((props, ref) => {
useImperativeHandle(ref, () => ({
handleSubmit() {
///////////formik submitForm function goes here
}
}));
return(
<div>
<Formik
initialValues={props.initValues}
validationSchema={Yup.object().shape({
name: Yup.string().required('Required'),
})}
onSubmit={(values, actions) => {
console.log(values)
}}
render={({ values }) => (
<Form>
<Field
name="name"
value={values.name}
component={TextField}
variant="outlined"
fullWidth
/>
</Form>
)}
/>
</div>
)
})
最佳答案
您可以将 handleSubmit 函数从 useImperativeHandle
中提取出来。使用 ref 从父级调用公开的方法
const Auth1 = forwardRef((props, ref) => {
const handleSubmit = (values, actions) => {
///////////formik submitForm function goes here
}
useImperativeHandle(ref, () => ({
handleSubmit
}), []);
return(
<div>
<Formik
initialValues={props.initValues}
validationSchema={Yup.object().shape({
name: Yup.string().required('Required'),
})}
onSubmit={handleSubmit}
render={({ values }) => (
<Form>
<Field
name="name"
value={values.name}
component={TextField}
variant="outlined"
fullWidth
/>
</Form>
)}
/>
</div>
)
})
const Parent = () => {
const authRef = useRef(null);
...
const callSubmit = () => {
authRef.current.handleSubmit(values, actions);
}
return (
<>
{/* */}
<Auth1 ref={authRef} />
</>
)
}
关于reactjs - 使用 useRef 从父组件调用 submitForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56978295/
下面的示例是否意味着表单将提交两次? function submitForm(){ document.myForm.submit(); } 我有一个错误,有时会记录每条记录中的两个。我怀疑它是
我想知道这两种方法哪种更快: 在一条语句中选择容器和表单本身: jQuery $('#submitForm form') 或者使用 jQuery 的 .find() 选择器: jQuery $('#s
我在个人资料页面中实现了预览按钮和保存按钮,将表单提交到两个不同的页面。一个带有保存数据的代码,另一个是假页面,显示的信息与原始页面将显示的信息相同。这是代码 function submitFo
我是 Yii 新手,当我单击提交按钮时,出现错误“未捕获的类型错误:无法读取未定义的属性‘submitForm’”这是我的代码 查看页面
我正在使用 react 钩子(Hook)和 useRef 从父级调用子方法(请参见此处:Call child method from parent) 具体来说,我正在尝试从我的父组件调用位于我的子组件
我在思考 coldfusion.ajax.submitform 时遇到了真正的麻烦。我有对我的 cfc 的调用工作,数据被保存到我的数据库,但是我没有收到(或没有正确设置)一种方法来接收方法调用成功的
我被难住了。我有一个 我正在使用 cfc 和 Coldfusion.Ajax.submitform 将表单信息保存到数据库中。我的表单使用复选框。我似乎无法弄清楚的是如果未选中复选框如何捕获。我读过,
我有一个包含多个表单的页面。然后我有一个按钮,它有一个附加到它的 jQuery 单击事件处理程序,它为每个表单调用 ColdFusion.Ajax.submitform()。我的问题是 submitf
也许 Coldfusion 的 Ajax 函数有些问题,但我无法弄清楚这一点...我只是尝试使用 ColdFusion.Ajax.submitForm 发布一些数据,然后将新内容加载到 #CartPo
我正在使用 jquery ui 当我编写以下代码时,悬停工作 Country 但是当我更改以下内容时,悬停不起作用 Country 同样的情况在这里 Country 告诉我
在旧笔记本电脑崩溃后,刚刚在新笔记本电脑上重新安装了所有内容。在此过程中从CF9升级到CF11。在 Windows 10 上运行 IIS。本地站点工作正常,但使用 ajax 提交表单时除外。 Co
在旧笔记本电脑崩溃后,刚刚在新笔记本电脑上重新安装了所有内容。在此过程中从CF9升级到CF11。在 Windows 10 上运行 IIS。本地站点工作正常,但使用 ajax 提交表单时除外。 Co
我是一名优秀的程序员,十分优秀!