React.js高阶函数的定义与使用
/* 高阶函数的简单定义与使用
一: 先定义一个普通组件
二: 用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高阶函数的定义与使用的更多相关文章
- JS高阶函数的理解(函数作为参数传递)
JS高阶函数的理解 高阶函数是指至少满足下列条件之一的函数. · 函数可以作为参数被传递 · 函数可以作为返回值输出 一个例子,我们想在页面中创建100个div节点,这是一种写法.我们发现并不是所有用 ...
- react.js 高阶组件----很简单的实例理解高阶组件思想
调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...
- 浅谈JS高阶函数
引入 我们都知道函数是被设计为执行特定任务的代码块,会在某代码调用它时被执行,获得返回值或者实现其他功能.函数有函数名和参数,而函数参数是当调用函数接收的真实的值. 今天要说的高阶函数的英文为High ...
- js高阶函数
我是一个对js还不是很精通的选手: 关于高阶函数详细的解释 一个高阶函数需要满足的条件(任选其一即可) 1:函数可以作为参数被传递 2:函数可以作为返回值输出 吧函数作为参数传递,这代表我们可以抽离一 ...
- js高阶函数应用—函数防抖和节流
高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...
- js 高阶函数 闭包
摘自 https://www.cnblogs.com/bobodeboke/p/5594647.html 建议结合另外一篇关于闭包的文章一起阅读:http://www.cnblogs.com/bob ...
- js高阶函数的理解
高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...
- JS高阶函数的使用
1.何为高阶函数呢? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数.简单来说,就是对其他 ...
- JS 高阶函数
笔记整理自:廖雪峰老师的JS教程 目录 概述 Array中的高阶函数 map(返回新的Array) reduce(返回新的Array) filter(返回新的Array) sort(返回同一Array ...
随机推荐
- HDU_1175_dfs
http://acm.hdu.edu.cn/showproblem.php?pid=1175 dfs(x,y,i,num),xy表示位置,i表示方向,num表示转向次数,num=2时候的剪枝很重要. ...
- Codeforces_456_A
http://codeforces.com/problemset/problem/456/A 按价格排序,比较质量. #include<cstdio> #include<algori ...
- Altium Designer 14安装破解
Altium Designer 14简称AD14,是一款专业的PCB设计软件,利用他可以计出专业的PCB元件.Altium Designer 14.3.10是目前的最新版本. Altium Desig ...
- ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题
这两天在学习solr,结果刚到编译solr源码就卡住了,足足卡了两天,网上找各种解决办法都是简单带过,说是缺少jar包,下载下来放到对应位置就好了....对应位置???咋不说这个问题用相应方法解决即可 ...
- VFP 图形文件与剪切板互换的API解决方法
在 VFP 中,凡遇图形处理,大多数情况下,都会涉及到图形文件与剪切板互换的情况.下面给出利用 API 解决的方法.这是原来从网上摘下来的,版权归原作者.基本处理的代码如下,你可以将其应用到你的代码中 ...
- 虚拟机ubuntu的网络连接类型
图很好 https://jingyan.baidu.com/article/91f5db1b17e8a01c7f05e3e6.html 很详细,有实例 https://www.cnblogs.com/ ...
- Git浅谈随笔之---如何工作
其他的版本控制工具我们常见的还有SVN,关于这两者的区别,我们不多谈,详见 Git 与 SVN 的区别 : Git是一种版本控制工具.用来记录文件内容的变化,备以后查阅某个版本的情况的系统:我们在Gi ...
- MySQL命令随手记之alter
修改表名 alter table 表名 rename 新表名; //修改table名 添加.删除.修改字段 alter table 表名 add [column] 列名 数据类型; //添加colum ...
- codewars--js--Hamming Numbers
问题描述: A Hamming number is a positive integer of the form 2i3j5k, for some non-negative integers i, j ...
- 跨域打开页面:Uncaught DOMException: Blocked a frame with origin
Uncaught DOMException: Blocked a frame with origin 使用postMessage()方法可以解决跨域传值的问题 Api: https://develop ...