reactjs - 从子 React Reactive Form 更新父状态变量
问题描述
我正在尝试使用框架探索react
库。next
因为我是一名angular
开发人员,所以我喜欢在reactive-form
我的新应用程序中重用我的一些。我找到了这个库,因为它具有几乎相同的reactive-form
.
现在,我state
在父表单上使用变量;但是,每当我尝试从子项(这是反应形式)更新值时。我无法完成它。
这是我复制它的简单代码。
import React, { useState } from "react";
import { FieldGroup, FieldControl } from "react-reactive-form";
export default function App() {
const [isRegistered, setIsRegistered] = useState(false);
async function submitForm(e) {
e.preventDefault();
setIsRegistered(state => !state);
console.log(isRegistered);
//await function call .....
}
return (
<div>
<h1>Hello StackBlitz!</h1>
<FieldGroup
control={form}
render={({ get, invalid }) => (
<form onSubmit={submitForm}>
<FieldControl
name="email"
render={TextInput}
meta={{ label: "Email" }}
/>
<button type="submit">Submit</button>
<p>{isRegistered.toString()}</p>
{isRegistered ? <span>Registered Successfully</span> : null}
</form>
)}
/>
</div>
)
}
只是为了简短起见,form
andTextInput
只是一个模型和一个元素。
如您所见,我submitForm
通过将其作为onSubmit
表单的函数来更新函数上的状态变量;但是,我可以submitForm
在尝试提交时触发,但state variable
值不会改变。
问题是,当我尝试submitForm
在 (FieldGroup) 之外调用该函数child
时,我能够更新该值。
我创建了一个示例应用程序,因此您也可以检查。
解决方案
似乎您需要将strict
prop 设置为false
for FieldGroup
,如下所述:https ://github.com/bietkul/react-reactive-form/blob/master/docs/api/FieldGroup.md
strict: boolean;
默认值:真
如果为 true,则仅当表单组控件发生任何更改时才会重新渲染组件,而不管父组件(状态和道具)是否更改。
推荐阅读
- javascript - 我正在尝试在 Vue.js 中重新制作用于碰撞检测的 javascript 代码
- python - 打字:如何将类作为参数传递?
- laravel - 如何更改 Laravel 中的默认语言?
- c - 我可以安全地复制 fpos_t 吗?
- c# - 如何使用LINQ,C#检查整数序列是否有偶数和奇数交替
- c++ - 对一个数字只使用一次函数
- javascript - 如何使用 onchange 滑块事件更新 d3 图表中的数据?
- python - Python 仅在一台计算机上抛出 ModuleNotFoundError
- django - 如何测试将查询参数作为数组而不是单个值接收的外部 POST 调用?
- php - 无法将图像上传变量设置为 NULL