hook

官方给出的理由

  • 状态逻辑复用难(高阶组件)
  • 生命周期导致复杂组件更加难以理解
  • 难以理解的this

代数效应

目前JS中并没有明确的概念,他是一种处理程序的一种编程抽象思维

在函数式编程中有一个理念叫做代数效应(目的把副作用从函数调用中剥离出去),它的出现是为了解决函数式编程中的问题,在有代数效应的系统中,函数可以“抛出”一个效应,即申明一个可能产生的效应,并将效应执行退至到调用者或者环境处理,这个效应可以像异常一样在调用栈中被捕获,并由调用者处理。这种方式允许你写出看起来像是纯函数的代码,同时仍然能够执行那些通常会产生副作用的操作 其常见的应用有:异常恢复、hooks(目标是让函数更加的接近纯函数)

可以看下dan的介绍代数效应

什么关系呢

  • React hook的发明者Sebastian Markbåge曾说过,我们在react hook中做的就是践行代数效应。
  • hook当中的useState等,我们不需要考虑状态具体是如何保存的,我们只需要假设useState返回的就是我们想要的东西

hooks的动机

主要目的还是为了加持函数组件