1、高阶组件就是一个函数,传给它参数(包括组件,变量等),它返回一个新的组件

2、列如现在有这么个高阶组件,根据传入的参数name,从而从localstore中获得这个name的值,然后更新到传入的参数component(组件)中去

wrapWithLoadData.js文件的代码:

import Rect ,{component} from "react"

export default (WrappedComponent,name)=>{       (WrappedComponent为传进来的组件,name为传进来的参数)

class NewComnent extends Component {  //定一个组件来为传进来的组件进行数据处理

constructor(){

super()

this.state={data:null}

}

componentWillMount(){

let data = localStorage.getItem(name)

this.setState({ data })

}

render () {

return <WrappedComponent data={this.state.data} />//高阶组件内部的包装组件和被包装组件之间通过 props 传递数据。

}

}

return NewComponent    //返回经过数据处理的组件(其实就是作为参数传进来的组件)

}

这就是一个高阶组件,当某个组件要从localstore中获值时,就可以将这个组件作为参数传进来。

2、列:有一个组件InputWithUserName要用到上面的高阶组件(即从localstore中获取数据)

import wrapWithLoadData from './wrapWithLoadData'  //获得高阶组件

class InputWithUserName extends Component {

render () {

return <input value={this.props.data} />//高阶组件内部的包装组件和被包装组件之间通过 props 传递数据。

}

}

InputWithUserName=wrapWithLoadData (InputWithUserName ,“username”)//将组件InputWithUserName作为参数传入高阶组件,到高阶组件中经过处理数据后再将其返回

export default InputWithUserName

3、如何用这个InputWithUserName组件

import InputWithUserName from './InputWithUserName'

class Index extends Component {

render () {

return ( <div> 用户名:<InputWithUserName /> </div> )

}

}

别人用这个组件InputWithUserName的时候实际是用了被加工过的组件。

如果现在我们需要另外一个文本输入框组件,它也需要 LocalStorage 加载'content' 字段的数据。我们只需要定义一个新的 TextareaWithContent

import wrapWithLoadData from './wrapWithLoadData'

class TextareaWithContent extends Component {
render () {
return <textarea value={this.props.data} />
}
} TextareaWithContent = wrapWithLoadData(TextareaWithContent, 'content')
export default TextareaWithContent

只用于自己学习记录

react-高阶组件的更多相关文章

  1. 聊聊React高阶组件(Higher-Order Components)

    使用 react已经有不短的时间了,最近看到关于 react高阶组件的一篇文章,看了之后顿时眼前一亮,对于我这种还在新手村晃荡.一切朝着打怪升级看齐的小喽啰来说,像这种难度不是太高同时门槛也不是那么低 ...

  2. 当初要是看了这篇,React高阶组件早会了

    当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...

  3. react高阶组件的理解

    [高阶组件和函数式编程] function hello() { console.log('hello jason'); } function WrapperHello(fn) { return fun ...

  4. 函数式编程与React高阶组件

    相信不少看过一些框架或者是类库的人都有印象,一个函数叫什么creator或者是什么什么createToFuntion,总是接收一个函数,来返回另一个函数.这是一个高阶函数,它可以接收函数可以当参数,也 ...

  5. React高阶组件学习笔记

    高阶函数的基本概念: 函数可以作为参数被传递,函数可以作为函数值输出. 高阶组件基本概念: 高阶组件就说接受一个组件作为参数,并返回一个新组件的函数. 为什么需要高阶组件 多个组件都需要某个相同的功能 ...

  6. 利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

  7. react高阶组件的一些运用

    今天学习了react高阶组件,刚接触react学习起来还是比较困难,和大家分享一下今天学习的知识吧,另外缺少的地方欢迎补充哈哈 高阶组件(Higher Order Components,简称:HOC) ...

  8. React——高阶组件

    1.在React中higher-order component (HOC)是一种重用组件逻辑的高级技术.HOC不是React API中的一部分.HOC是一个函数,该函数接收一个组件并且返回一个新组件. ...

  9. react 高阶组件的 理解和应用

    高阶组件是什么东西 简单的理解是:一个包装了另一个基础组件的组件.(相对高阶组件来说,我习惯把被包装的组件称为基础组件) 注意:这里说的是包装,可以理解成包裹和组装: 具体的是高阶组件的两种形式吧: ...

  10. react高阶组件的使用

    为了提高代码的复用在react中我们可以使用高阶组件 1.添加高阶组件 高阶组件主要代码模板HOC.js export default (WrappedComponent) => { retur ...

随机推荐

  1. 第一课android开发之在activity间传递参数

    一.活动间简单参数传递:1.在布局中添加按钮,用<Button,用id设置id名称,id="@+id/这儿填写你要设置成的名称":用text设置按钮上显示的文字.text=& ...

  2. 是时候选择一款富文本编辑器了(wangEditor)

    需要一款富文本编辑器,当然不能自己造轮子.本来想使用cnblog也在用的TinyMCE,名气大,功能全.但是发现TinyMCE从4.0开始,不再支持直接下载.所以还是决定选用wangEditor.遗憾 ...

  3. golang 实现HTTP代理和反向代理

    正向代理 package main import ( "fmt" "io" "net" "net/http" " ...

  4. Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)

    Problem   Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...

  5. LA3971 组装电脑

    思路:二分,就是在不超过b的预算下,使得品质的最小值最大化.关键还是判断函数吧. 假设答案为x,判断函数,就是每一个种类的配件的品质最基本的品质要大于x,然后找出最小的值.这样的配件品质之和的价格要小 ...

  6. nginx配置文件详细解读

    https://m.w3cschool.cn/nginx/nginx-d1aw28wa.html ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户 ...

  7. 毕业设计(3)基于MicroPython的篮球计时计分器模型的设计与实现

    前言 我们身边有不少人都喜欢看篮球比赛或者经常打篮球.说起篮球,肯定要提到NBA(美国职业篮球联赛),现在也正是NBA 18-19赛季常规赛的时候.最近3月5日,韦少22分帮助雷霆终结了四连败,哈登4 ...

  8. Python-包-65

    包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警 ...

  9. 详解WTL应用向导

    之前向 VS2019 中添加了 WTL 应用向导,今天来分析下该应用向导安装的相关文件,最终达到拷贝相关文件到 VS2019 的相应目录中即可直接使用 WTL 应用向导的目的. 在 VS2017 之前 ...

  10. 【翻译】asp.net core2.0中的token认证

    原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token ...