00:00
下面呢,我们来去说一下这两个概念啊,高阶函数与高阶组件,咱们一起说一说啊,首先高阶函数是一个特别的函数吧。也就不是所有函数都是高级函数吧,对吧?啊,一类特别的函数好,它要具有什么特性才能是一个高阶函数呢?嗯,有两种情况,只要满足其中一种条件就行,一种啊,接收函数类型的参数,这能听懂吧?好,第二个函数的返回值是一个什么?返回值是一是函数,不就我本身是函数,我的返回值是函数,或者我接受的参数是函数。
01:00
能清楚吧,那我这个函数就是一个什么高阶函数,下面说我们前面学过哪些常见的高阶函数,就哪些常见的函数是高级函数吧,他学过的是不是咱学的比较早的基本语法里面有吗?啊set timeout是吧,你的定时器呗,对吧?啊,定时器也就是set timeout啊,或者是set什么。还有吗?啊有promise啊好promise,那promise这个时候就有很多了,本身是不是。因为promise它需要接收一个什么,是不是接收一个函数,接收一个执行系函数嘛,对不对,这能听懂吧,啊接收一个函数好还有吗。
02:00
的认是不是,是不是是因为他接受成功的回调和什么失败的回调。这不接受函数吗?能听懂不能听懂,那还有吗?这里要说数组,很多高阶函数的方法便历相关的方法或一是吧,他是不接受一函数,还有什么fair,还有什么map。Reduce。是吧,还有大家不知道学过没?快的学过吗?查找某一个匹配的元素。那对应的就有一个find index数组,现在很多方法都是啊,高级函数的实现接触都是个便秘的函数吗?能听到吧,还有吗?
03:09
这个好像上面说的都一类。都是参数式函数。能听到不?有没有返回值是函数的函数方法?因为我本身是个函数,我还返回一个函数。背包里面确实有过,我们B包里面不是可以有个外部函数,有一个内部函数,对不对,外部函数将内部函数给他返回是吧?能懂不啊,其实有一个。有一个。是吧,能到不啊,函数的什么半能不听懂,那函数的半的话,不是它本身是函数吧。方法不就是个函数吗?能听懂不啊?
04:03
OK,函数对象的什么半的方法是吧。嗯,他是不是返回一个新的函数啊,一个新的方法好。那这个地方要说一个事情啊,我们这个高阶函数啊,高阶函数和我们的一般的非高级函数,它的区别在哪呢?是不是就在于一般的函数,可能接受的参数是一般的类型,不是函数对不对,或者返回去不是函数是吧?那你要知道一个函数代表着一个动态的功能。代表这个功能听懂吧,也就是说比如说我一个函数。啊,接收一个数值,或者接收一个字符串是吧,和你接收一个新的函数啊,接收一个新的函数,那谁具有更大的一个变化性呢。函数,那肯定接受函数,我的可扩展能力更更强大呀,听懂不?我接受函数就接受了一个变化的功能。
05:05
听懂了吧,那功能是不是后面可以执行呢?啊,我返回一个函数,是不是又返回了一个将来可以反复使用的一个功能。能听懂我说的意思不?哎,高阶函数啊。啊,更加动态啊,更加具有复杂性。而现在来看一下我们的这个是不是一个高级组。是不是很明显嘛,这能看到不,这个这个就是一个高级函数嘛,我们当前学的这个就是一个高级函数。
06:02
就是这个form点,因为后面它是不是又可以加括号。是不?也就是说这个函数返回的函数是不是能包装一个组件,生成一个新的组件了,大家看就能看到,我的这个亏损就很厉害。它反过来一个能够包装一个组件,生成一个另外一个新组件的一个功能。啊,一个功能必须是函数吧。那看一看我的这一个什么。是不是是的,也就是说这个也是。因为我们调动是这么调的吗。啊,要想提供一个灵活啊,强大的功能啊,这个高级函数是一种非常好用的东西啊,这是这个。好,那下面要说啊这个啊,高级函数我们说过了,下面我们说高阶组件,高阶组件啊,先要说本质是什么啊,本质就是一个函数。
07:17
也就一个高阶组件,跟跟我们平常组件不一样是吧,这个组件它是个函数啊,那什么样的函数才是高阶组件呢,是不是来。下面就要说明这个函数需要具有什么特点。很简单,接收一个组件干嘛?返回一个新的组件,能听懂吧?而新组建内部,新组件内部。渲染那个接收组件的标签,接收啊,就是被包装啊,被包装啊,被包装的是谁呀?是不是接收了一个组件,也就是他是被包装的组件,听到不。
08:14
被包装组件啊,被包装组件,而这一个生成的新的组件,我们称它为什么是不是产生的包装组件,就包装后的组件称为包装组件,听懂不?能懂吧?而包装组件会向被包装组件传入特定的什么呢?属性数据啊。属性,呃,我们的这个大家看着我。你说现在我这个是一个高阶组件吗。是吧?
09:01
是还是不是不是。你看刚刚看到它本质是个函数啊,是函数吧,是他接受一个组件,它接收组件。他接受主角和问题。他没有。它没有,哎,不是这个函数是高级组高级组件,而是它返回的什么,它返回的函数是高级组件,听到吗?它返回那个函数是高级组件,而那个函数是不是接收一个组件,产生一个新的组件,我们渲染的时候是不是渲染那个包装以后的组件。那个包装以后的组件内部是不是包含了它。听懂不?那你说这个被包装组件是包装组件的一个子组件吗?那副组件会像志愿传了一个什么音,我们刚才看到信息了,传了个什么,是不是传了一个很重要的属性对象叫form呀,而这个form对象是不是具有强大的功能?
10:03
能听到不?这样其实它是用来去扩展一个组件的,就是高级组件它啊。是用来干嘛的啊,用来干嘛是扩展啊某个啊扩展组件。啊的功能啊,简单来说就是扩展组件的功能,也就是说有了这个高阶组件,我的这个落是不是才能变得强大起来,要没有这个包装组件帮你包装,你能收到那个货物对象吗?不能,那你能够去进行收集数据,进行表达验证吗?都不行。嗯,这是这个先要有一个基本的理解啊,我们后面也会见到其他的包装的啊,高高阶组件也可能好这个地方说,你说他是高阶组件吗。
11:09
他是吗?他肯定不是,必然不是啊,就是看他有接受组件标签组件吗?没有没有,那他反过来函数是高阶组件吗。这个不是因为它包装的,它传入的不是主件,而是组件的什么标签。能听懂不啊,我说的是我们说的是要传的是什么主接,而他传的什么标签对象对不对?那还是有一定区别的吧。能听懂不啊,这个要知道啊。但是啊,这一个啊,这个其实它虽然说不是高级组件,但是不是它相当于扩展了这个标签的功能,对不大家知道啊,组件跟标签对象是个什么关系。
12:04
组建组建的标签对象。是个什么关系?组件本质上是不是个函函数,是个公的函数吧,是个函数吧,最后是不是产生组件的实力,而组件的实力就是谁标签对象,那也就是说我组件是一个类型对不对?能听懂不,组件是类型,而我的标签呢,是组建的某一个实例嘛。能听到不某一个实例,我们的高阶组件是用来去包装谁的组件的,包装这个组件类型的,而它的这个函数刚才反过来函数它包装的谁,是不是包装的是实例,一个针对的是类型,一个真的是那个类型的什么实例?能看到不要能看到啊行,这是这个要有一个基本的一个理解,记注住别人问你高级,首先你要表达出来它本质上是个什么函数。
13:11
那函数就适应参数是什么,对不是不是一个组件呢?返回值是个什么?是个新的组件,那新的组件跟那个跟那个传统的组件是什么关系,父子关系。N到包父子关系,而且你的父主线是不是要负责向子线传递属性,如果你比如说你高阶主线,你包了一个组,包了一个组件A。我有一个高阶组件FN,我给他包一下,最后反过来一个BB也没下A传东西,那有什么意义吗?这没什么意义,听懂了不啊,肯定是要去向他是不是传递特定的你想传递的一些东西。比如说我们当前传的就是一个对象叫什么。Form。听懂了吧,啊,就是你的副组件,你的副组件包裹的组件需要有责任向被包方的组件传递特定的东西来扩展它的功能啊,这个要去有一个基本理解,这里面两个链,一个叫高阶函数,一个叫高阶组件。
14:20
其实高阶组件。也是一个高阶函数,为什么你想我接受一个组件,一个组件是不是个函数,人说老师我可以定一个内啊,内是不是个函数。主件我们分两种语法吗?一种是用公程函数定义,一种是内定义,对不对,内的本质是不是函数是,那所以说我们的主线就是个函数吧,嗯。是吧,组件就是一个函数,那所以说就变成了我的高阶组件是一个函数。对吧,随便来个Apple,这是我的高阶组件,它是个函数,它接收一个什么组件函数嘛。
15:02
哎,只是这个是一个特定的组件函数,那返回的是个新的组件,那是不是返回的是个新的组件函数。听不懂,所以最终的结果啊,要知道其实我们的高阶组件跟高阶函数有一定的什么关系。嗯。高阶组件也是一个什么高阶函数是不只是它接收的啊,大家看了这个其题呢,接收的是组件函数,接收的是一个组件函数,返回的是一个什么,一个新的组件函数对不对?这里没听懂,也说它从两个方面是不是都满足高阶函数的特点,我们的高不是高阶函数,是不是只要具备一个条件就行接受一个函数,我接受了吗?接受了是不是,或者说我返回函数?
16:02
就可以。我从哪两哪个方面说,是不是都是一个高级函数,嗯,他们是有关系的,所以我们放在一起给大家去说一说,也就是说你只要说高阶函数,你就给他说高阶组件一一起说,你问到高阶组件,那你把高阶函数也说一说。那不就扩展了吗?能听懂吧,啊,而且大家把它连在一起去思考啊,去看看相关的东西。
我来说两句