/* 高阶函数的简单定义与使用
一: 先定义一个普通组件
二: 用function higherOrder(WrappendComponent) {
return
} 将组件包裹起来,并用export default higherOrder将这个高阶函数抛出去
三: 使用时先导入这个高阶函数,直接将组件以参数的方式传递进来即可
*/
import React,{Component} from 'react'; /**
* 定义高阶函数
*/
function higherOrder(WrappendComponent) {
return class A extends Component {
render() {
return (
// 这个 WrappendComponent 将被传递进来的组件代替
<WrappendComponent />
);
}
}
}
export default higherOrder;
// ===================================== 分界符 ==============================================
/**
* 使用高阶函数
* 一: 先将高阶函数引入
* 二: 将组件以参数的方式传递进去
*/
import higherOrder from './';
class B extends Component {
render() {
return (
<div>
子组件
</div>
);
}
}
// 调用高阶函数:
export default higherOrder(B)

高阶组件应用:

 import React,{ Component } from 'react';
import './App.css';
import B from './b';
class App extends Component {
render() {
return (
<div>
<B name={'张三'} age={12}/>
</div>
);
}
} export default App;
 import React,{Component} from 'react';
import A from './a';
/*
* 普通显示组件
*/
class B extends Component {
render() {
return (
<div>
我的名字叫:{this.props.name}
<br />
我的年龄是:{this.props.age}
<br />
我的性别是:{this.props.sex}
<br />
</div>
);
}
}
// 调用高阶函数A:
export default A('提示')(B)
 import React,{Component} from 'react';

 /**
* 定义高阶函数 A
*/
export default (title) => WrappendComponent => class A extends Component { render() {
// 通过取出 props 来控制要传入子组件的 props
const {age, ...otherProps} = this.props
return (
<div>
<div>{title} X</div>
{/* // 这个 WrappendComponent 将被传递进来的组件代替 */}
<div>
// 在App.js中,我们并没有将sex这个属性传递给B,而是通过A高阶函数来传递
<WrappendComponent sex={'男'} {...otherProps}/>
</div> </div>
);
}
}
// 上述三个页面执行流程:App.js渲染B.js定义的页面内容。而B.js调用了高阶函数A.js,所以实际留存为:App.js传递的值先到A.js高阶函数,A.js高阶函数对值进行处理然后再传递给B.js显示

React.js高阶函数的定义与使用的更多相关文章

  1. JS高阶函数的理解(函数作为参数传递)

    JS高阶函数的理解 高阶函数是指至少满足下列条件之一的函数. · 函数可以作为参数被传递 · 函数可以作为返回值输出 一个例子,我们想在页面中创建100个div节点,这是一种写法.我们发现并不是所有用 ...

  2. react.js 高阶组件----很简单的实例理解高阶组件思想

    调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...

  3. 浅谈JS高阶函数

    引入 我们都知道函数是被设计为执行特定任务的代码块,会在某代码调用它时被执行,获得返回值或者实现其他功能.函数有函数名和参数,而函数参数是当调用函数接收的真实的值. 今天要说的高阶函数的英文为High ...

  4. js高阶函数

    我是一个对js还不是很精通的选手: 关于高阶函数详细的解释 一个高阶函数需要满足的条件(任选其一即可) 1:函数可以作为参数被传递 2:函数可以作为返回值输出 吧函数作为参数传递,这代表我们可以抽离一 ...

  5. js高阶函数应用—函数防抖和节流

    高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...

  6. js 高阶函数 闭包

    摘自  https://www.cnblogs.com/bobodeboke/p/5594647.html 建议结合另外一篇关于闭包的文章一起阅读:http://www.cnblogs.com/bob ...

  7. js高阶函数的理解

    高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...

  8. JS高阶函数的使用

    1.何为高阶函数呢? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数.简单来说,就是对其他 ...

  9. JS 高阶函数

    笔记整理自:廖雪峰老师的JS教程 目录 概述 Array中的高阶函数 map(返回新的Array) reduce(返回新的Array) filter(返回新的Array) sort(返回同一Array ...

随机推荐

  1. 刚安装了ftp之后无法使用root访问,服务器发回了不可路由的地址。使用服务器地址代替。

    真的艰辛,用了整整一个下午加晚上,才把服务器搭建好,中间真的好多坑... 错误1: vsftpd正确配置: vsftpd.conf: pam_service_name=vsftpduserlist_e ...

  2. 11--Java--JDBC知识梳理

    JDBC 一.概述:JDBC(java database connection),使用java语言连接数据库,是java提供一套操作数据库的接口(标准),实现对数据库的统一访问,是一个java引用应用 ...

  3. Springboot全局事务处理

    什么是全局事务 Spring Boot(Spring)事务是通过aop(aop相关术语:通知(Advice).连接点(Joinpoint).切入点(Pointcut).切面(Aspect).目标(Ta ...

  4. 使用gRPC-Web从浏览器调用.NET gRPC服务

    我很高兴宣布通过.NET对gRPC-Web进行实验性支持.gRPC-Web允许从基于浏览器的应用程序(例如JavaScript SPA或Blazor WebAssembly应用程序)调用gRPC. . ...

  5. php 绘制验证码 示例

    <?php header("content-type:image/jpeg"); session_start();//开启session //宽高 字体大小 $width=1 ...

  6. javascript 完全正确的数据库indexedDB

    //indexedDB var dbName = 'whx', version = '1', dbTableName = 'bbg', request, db, conCls, updateKey, ...

  7. 卫星轨道相关笔记SGP4

    由卫星历书确定卫星轨道状态向量 卫星历书的表示方法有2种: TLE(Two Line Element),和轨道根数表示方法 由卫星历书计算出卫星轨道状态向量的方法有2种: SGP方法,NORAD的方法 ...

  8. Day6前端学习之路——布局

    一.定位 1)静态定位  position:static(默认) 2)相对定位 position:relative(要配合top.bottom.left.right等属性来使用) 3)绝对定位 pos ...

  9. oracle系列练习题

    刚学习Oracle,老师给我们布置了一些题目来练习. 题目: 创建四个表,并录入数据 1.student表 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, ...

  10. mac item2的快捷键

    https://juejin.im/entry/58fac23fb123db4449071c99 听说这个工具可以解决,iterm2的整句翻译的问题.一致找不到免费的破解版本. Myna for Go ...