Long Long Ago


显示逻辑和功能逻辑: UI上获得的思考

Yarco

  • Administrator
  • Newbie
  • *****
    • Posts: 29
    • View Profile
on: January 09, 2019, 10:38:30 am
在做SPA的时候, 我们通常会被告知一个理论, 就是做组件的时候最好是: stateless 无状态的. 这么做的理由是什么?

我们假定做一个问卷调查, 那么形式上可以分为两种, 一种是全部试题在一个页面上, 另外一种是一题一题作答.
由前者的需求, 我们可以诞生类似的代码构造:
Code: [Select]
题目父类 -- 题目子类(单选, 多选)然后显示一个new一个. 我们可以看到它其实是基于显示逻辑的. 所以从形式上看, 当我们需要很多显示逻辑的时候, 包含了内部变量的类的实例更合适. 这是传统的以内容为主的应用.

不过考虑到我们是在网页上(不比游戏中所需要的各种对象), 而SPA又基于功能型. 那么应用场景会更近似后一种情况: 一个答题模版需要根据不同的题目进行切换:
Code: [Select]
数据流 --> 题目模板这种情况下, 就更趋向于功能逻辑了. 你的代码需要被不同的数据利用, 此时显然stateless更管用.

结论, React/VueJs之类的现代Js库之所以提倡stateless, 原因是应用更多的是以功能逻辑为主. (这也是各种数据管理包出现的原因, 毕竟你组件stateless了, 总需要额外的类库去管理数据的)