【react】---高阶组件的介绍及使用
高阶组件(high-order component)类似于高阶函数,接收 React 组件作为输入,输出一个新的 React 组件。高阶组件让代码更具有复用性、逻辑性与抽象特征。可以对 render 方法作劫持,也可以控制 props 与 state。
简单的介绍一下高阶组件:
header组件没有的某些功能的,通过高阶组件就会拥有某些功能,但是这个功能不属于它。
使用高阶组件,
高阶组件内部结构解析
高阶组件的使用:
需要使用高阶组件的组件中引入高阶组件,导出高阶组件且把该组件作为参数导出,经过高阶组件的输入输出,记住,高阶组件处理后的(使用高阶组件)组件不在是之前的那个组件了,它是一个新的组件,拥有原先的功能,增加了某些东东。
大白话解析高阶组件:
首先看概念一下:
一个组件,经过高阶组件处理之后,增强了某些功能,原本的功能还有,(那么高阶组件是如何处理的呢? 高阶组件根据你传入进来的组件,继承传入组件的功能及属性,然后添加某些功能或者属性,再通过return返回给你,然后再重新渲染,此时组件是新组件了 )
//
总结高阶组件的基本使用:
传入组件,向高阶组件传入该组件
高阶组件通过继承该组件,然后处理处理,再给返回该组件重新渲染。
高阶组件的另外一种用法:
柯里化,使用的方法
高阶组件,处理的方式
注意,这里返回的是继承Component的组件,这样就跟传入的组件是父子关系了。------这就涉及到了父传子的知识点了。
所有的组件都是通过继承Component的组件,而来的,所以说,他们都拥有一个共同的父亲,那么放在这里,
总结:
高阶组件,通过继承Component的组件,与传入的组件成为父子关系,
在通过子通过参数高阶组件的函数传参进入高阶组件内部(用到了柯里化)
子组件(传入的组件)通过this.props 接收高阶组件(类似父组件)传入的值做修改
1、高阶组件的属性代理的理解
0.1 header组件在App组件中做标签使用,现在给header组件自定义属性,传值(父传子),那么案例正常情况下,header组件内部就应该能够通过this.props 来接受了。但是....,下面供
0.2、按照父传子的形式是可以接收到App传递过来的值的,但是没有接收到,为什么没有接收到呢? 下面介绍
打印发现没有
0.3 因为header组件使用了高阶组件,返回的是一个新header组件了,不是原来的组件了,所以无法接收到App父组件传递传递过来的值。那么如何接收呢? 下面介绍...
0.4 通过给高阶组件设置属性代理 { ... this.props } 把接收到的值代理过去(把接收到的值解构赋值过去)
// 通过在高阶组件中打印发现,这里可以接受到 App传递过来的值
2、高阶组件的 反向继承 的理解
反向继承的特点是,通过当前的高阶组件可以调用该组件任意...
super就代表调用父级的方式 (记住哦,返回的是一个新的组件)
super.render 调用的是这一块内容。
利用高阶组件来做 路由守卫 / 登录界面。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
高阶组件的应用,在loading中使用,使用的是反向继承
one组件请求数据,当数据没有请求到时候,执行的是loading,当请求到之后就重新渲染 one组件
高阶组件 内部结构,继承传入的组件,判断处理,(通过return啥就渲染啥的方式)
高阶组件与context的使用
这个是没有使用高阶组件之前,这样每次都要写比较麻烦。(three组件没有使用高阶组件之前,每次都需要引入还要写一大堆的代码,如何解决这问题呢?下面供...)
创建一个生产者(生产数据的咯)
在哪里生产嗯? 在main.js中生产(为什么要在这里生产?目的是为了让下面更多使用咯!)这里生产了username:"Alley",age:20 (看清如何生产啊,别忘记了)
使用高阶组件,处理context 中使用数据的麻烦/繁琐的事情(专门创建一个处理这个玩意的高阶组件,)(引入、包裹、函数返组件、)
使用高阶组件,这样就可以使用高阶组件了,就可以获取到props的值了
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0.1、生产数据设定
0.2、生产了数据
0.3、