javascript - 动态渲染的嵌套输入失去了它们的价值
问题描述
我是新手,react-hook-form
并注意到一些我似乎无法阻止的事情。当一个组件被动态渲染时,它的嵌套输入组件的值不会保持它们的值。
我的组件结构是:
ParentComponent
--> ChildComponent(s)
--> Controller component (supplied via react-hook-library)
这是一个重现问题的沙箱 - https://codesandbox.io/s/flamboyant-http-i574n。
我可以通过将所有代码放入一个组件并使用 CSS 动态显示它们来解决这个问题。但是,这会产生一个非常大的组件文件,因此要尽量避免这种情况。
注意我感觉这是预期的行为,因为控制器在卸载时取消注册 ref。
解决方案
我找到了解决方案。而不是动态呈现组件,而是将显示值传递给组件并将其设置为hidden
HTML 属性。
所以不要这样做:
//ParentComponent
return (
{displayInput && <CustomInput />}
)
我已经这样做了,它保持了价值观。
//ParentComponent
return <CustomInput hidden={!displayInput} />
//CustomInput
return (
<section hidden={hidden}>
//content
</section>
)
我担心随着表单的增长,这将不是一种可扩展的方法。理想情况下,我会有条件地渲染这些组件,而不是有条件地制作它们hidden
。
推荐阅读
- cassandra - Cassandra 隔离——更新对其他客户端的可见性
- ruby-on-rails - 使用 activeadmin gem 进行多项选择
- lldb - 如何使用 lldb 附加第二个下一个进程
- android - 在 RecyclerView Fragment 上使用 setOnClickListener 移动到另一个活动
- vb.net - 如何通过 VB.NET 发送短信
- php - 在包含 0 和 00 的数组中查找 00
- c - 以下语句如何产生空格?
- firebase - 每 2 分钟通过 firebase 函数为数据库中的所有用户更新字段
- android - 在图片模式 YoutubePlayer View Android 中输入图片时出现未经授权的叠加错误?
- python - 列表中的条件 lambda 函数?熊猫