关于反应组件通信有很多答案,但似乎没有一个解决了我的问题。这是我的问题的细节。请帮忙!提前谢谢。
我正在构建一个灵活的表单。 UI由嵌套组件生成。
表单数据结构也可以是嵌套的json对象。
表单可以有一些输入和部分,部分可以有一些输入或部分,然后继续。 sections只是UI布局组件,不关心数据或状态。
但输入(可以是文本输入,复选框等任何捕获数据的东西)
我面临的问题是任何输入的验证都可能取决于任何其他输入的值。
即inputsA有一个验证表达式,如formData.inputB> formData.inputA + formData.inputC
但如果你不提供验证表达,他们也可能完全不依赖。
如果我将整个formData传递给组件树,每次输入一个输入时,整个表单都会重新呈现。
我考虑过redux,但真的不确定redux如何帮助这种情况。我仍然是相对较新的反应和减少,所以我可能是错的。
那么什么是可行的解决方案?
答案 0 :(得分:0)
当你模仿表单元素时,这是一个常见的问题。我有同样的问题。
Redux是迄今为止最受控制的解决方案。所有组件都可以同时监听和更新同一个对象。但是您也可以将函数作为绑定到父项的父项的道具附加。该函数将获取父级的状态并像临时存储一样更新状态。如果你是一个好的开发人员,这是可能的,但这两件事都不容易。学习的好时机:)
答案 1 :(得分:0)
在React中调整性能的核心工具是组件类的shouldComponentUpdate
方法。如果您对传递到各个表单字段的内容很清楚,然后在它们上正确实现shouldComponentUpdate
,那么您应该只在需要时才能更新。在您的特定示例中,您无需在任何地方传递完整对象。
您可以将value
,onChange
和isInvalid
传递给每个字段,并计算根目录的有效性(您可以访问完整状态)。然后,shouldComponentUpdate
字段可以根据props
来决定。 (显然这是一个简单的例子,但作为一个原则,它是合理的。)