问题描述
我正在尝试为我的拙劣的React应用程序实现 Form系统。 我的计划如下:
?我的总体规划的无聊细节
- 实现一个
useForm
钩子,该钩子为我维护表单数据的创建状态提供了多个处理程序。主要是,此钩子导出form
本身(它是此useImmerReducer创建的对象)和getValue
(其是函数)以进行检索返回的form
中的某个值。 - 实施
Provider
;一个在其上下文中呈现其所有子级的组件,该上下文的值为useForm
的输出。 - 实现一个
FormItem
来侦听此上下文的值,并通过特定的处理程序包装其子级,以更新在useForm
AKAform
中实现的状态。
我遇到的问题是,每当我向Form
的所有FormItem
提供输入时,它们都将重新呈现。后来我进行了更多的挖掘工作,发现我的form
是重新呈现(有点惊奇)的主要原因。现在,我只是停留在这一点上,我不知道如何在useForm
中管理我的状态并阻止我的所有上下文订户进行不必要的重新渲染。
?跳过上面的实际问题
我将尝试以最清晰的方式来表达我的问题,我基本上是在尝试使已定义的上下文中的子组件提供object
(即要订阅的data
)作为值data
中只有一个键。
以下是一些视频来说明我的情况:
我的表格提供者的孩子<Provider>
<FormItem fieldKey="username"> // let's call this component Jim
<TextInput/>
</FormItem>
<FormItem fieldKey="password"> // and call this one Jax
<TextInput/>
</FormItem>
</Provider>
上下文数据
const data = useContext(MyContext);
/**
* {
* username: 'tacos',* password: 'most powerful password'
* }
*/
当我开始输入 Jax 时,如何使 Jim 不重新渲染?反之亦然? 非常感谢任何反馈,谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)