/* 高阶函数的简单定义与使用
一: 先定义一个普通组件
二: 用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. How to setup backup by using EMC NW + EMC NMM for sqlserver failover cluster (not always on)

    As we said, sqlsever fail over cluster is perviously version of always on. The HA was guarenteed by ...

  2. LNK2019

    原因:inline函数被外部文件的函数调用时,必须将inline函数定义在头文件中,不能定义在cpp文件中.

  3. 一文带你了解 C# DLR 的世界

    一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...

  4. pytorch之 classification

    import torch import torch.nn.functional as F import matplotlib.pyplot as plt # torch.manual_seed(1) ...

  5. mysql ---- Host '' is not allowed to connect to this MySQL server

    mysql>use mysql mysql>update user set host= '%' where user = 'root'; 此时如果提示报错,不用管,继续往下走 select ...

  6. asp.net mvc项目实战遇见问题及解决方式----ajax请求500错误,请求多表数据

    ajax请求出现500错误——但是想实现的功能是,把一个页面分成了两份,点击右边导航栏,利用ajax请求,请求数据,在右边出现相应页面,当时使用的是partialAction然后出现了这个500错误, ...

  7. vue 鼠标移入移出 列表蒙层展示

    <template> <section class="base"> <ul> <li v-for="(item, index) ...

  8. Linux运维--实践-Rally

    1.rally简介 OpenStack Rally 是一个自动化测试工具,社区希望通过 Rally 来解答 "How does OpenStack work at scale?(如何规模化运 ...

  9. Mysql 保存emoji表情报错

    保存emoji表情错误 首先错误表现,抛出业务层报错之外,根源的数据库错误是: sql 错误码 1366 字符集相关错误. uncategorized SQLException; SQL state ...

  10. 「Flink」使用Managed Keyed State实现计数窗口功能

    先上代码: public class WordCountKeyedState { public static void main(String[] args) throws Exception { S ...