复杂表单分组以及递归失去焦点bug复盘

场景

在问题列表中,标准化问题以后,在子问题是输入框修改提交时,须要向上修改列表以及全局的答案对象,而这一过程当中可能会致使输入框的丢失焦点的问题。
前端

存在的问题点或者风险点


1 每次修改都要改全局的答案对象,可是在某些特殊题目,好比输入框带有图片类型的时候,会是经过key修改变量的方式,而不是纯函数编程思路的返回新对象。
2 问卷中的题目都是利用的受控组件,层层遍历致使组件的修改值的性能比较低,建议使用非受控组件,自身支持修改,而后同步给store和父组件
3 组件具备交互行为特色时,它的状态不单单依赖于传入的数值,还有交互行为,而这些通常状况下咱们是不作设计的,会致使交互的问题。
react

总结点


在递归复杂数据的时候,针对每一个递归的子组件的状态不单单包括它的数据,还有一些交互状态,好比说焦点,滚动位置等,通常状况下针对这些咱们是不作这些交互行为数据存储的,或者作了也会由于细节致使最终效果有些差别。因此在改变数据的时候:
编程

  • 要注意用纯函数的方式每次都要从新赋值,而不是用指针改变值,用指针改效果上值的改变的,但在原理上与复杂数据直接用拼装的新数据是不一样的
  • 针对组件须要具备除常规数据以外的状态时,须要在这个组件或者高级的容器角度为其加key,而且这个key要保证一致不变性。
  • 针对前端须要的一些数据模型增删改的操做,index是不许确的,这种状况下建议前端自定义每项的id,能够用随机数,能够用hash,来保证正常的dom操做的正确性。

同步语雀文章

原文连接:www.yuque.com/robinson/de…dom

相关文章
相关标签/搜索