1、react中的状态提升
react的状态提升就是用户对子组件操作,子组件不改变自己的状态,而是通过自己的props把操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是react单项数据流的特性决定的。
官网的话:共享state(状态)是通过将其移动到需要它的组件的最接近的共同祖先组件来实现的,这被称为“状态提升”。
2、react高阶组件(函数)
首先了解下js高阶函数
react高阶组件与js高阶函数用法差不多,只不过传入的参数变成了react组件,并返回一个新的组件
高阶组件可以看做是装饰器模式在react的实现,即允许向一个现有的对象添加新的功能,同时又不改变其结构,属于包装模式的一种
3、什么叫pure function (纯函数)
满足两个条件:(1)给出同样的参数值,该函数总是求出同样的结果,该函数结果值不依赖任何隐藏信息或程序执行处理可能改变的状态或在程序的两个不同的执行,也不能依赖来自I/O装置的任何外部的输入
(2)结果的求值不会促使任何可语义上可观察的副作用或输出
纯函数
sin(x),返回实数x的sin值
length(s),返回串s的大小
encrypt(k,d),运行一个使用key k 关于日期片d的确定加密算法
非纯函数
(1)返回当前天星期几的函数是一个非纯函数,因为在不同的时间它将产生不同的结果,它引用了一些全局状态,同样的,任何使用全局状态或静态变量潜在地是非纯函数
(2)random()是非纯函数,因为每次调用潜在地产生不同地值,这是因为伪随机数产生器使用和更新了一个全局的“种子”状态,加入我们修改它去拿种子作为参数,例如random(seed),那么random变为纯函数,因为使用同一种子值的多次调用返回同一随机数
(3)printf()是非纯函数,因为它促使输出到一个I/O装置,产生了副作用