在表单功能开发时,会遇到一个普遍性的问题,即表单会存在多种状态:新增、编辑、查看等等,不同的状态也对应着不同的UI和逻辑。但是不同的状态对应的UI和逻辑大部分又是相同的。就导致我们在进行组件、模块划分时,不知道怎么办。
其实,针对类似表单这种问题,有这么一个解决思想:展示(UI)组件 - 容器组件。
我们可以把整个表单相关功能划分为两类模块:
(展示组件)表单中涉及到所有状态的UI结构样式全部放到UI组件中(不涉及任何的逻辑,只接收不同状态的数据,来做UI展示)。
(容器组件)表单中涉及到的不同状态以及对应的逻辑,单独放在一个对应状态的组件模块中。例如:新增相关的逻辑单独放在新增组件中,编辑逻辑单独放在编辑组件中,查看逻辑单独放在查看组件中。
(组合)然后在所有的容器组件中,去引入展示(UI)组件,将对应状态的经过逻辑处理后的数据传入给展示组件。
文字太抽象,请看图:
展示组件-容器组件.jpg
总结:这种模式本质上也是在做模块的解耦,将处理数据的逻辑和UI展示划分为不同模块,方便后期维护。表单状态越复杂,这种模式的收益就越高。