react.js 高阶组件----很简单的实例理解高阶组件思想
调试代码之前,我设置了两个缓存
分别是username和content
在控制台console设置两个缓存代码
localStorage.setItem('username','老王')
localStorage.setItem('content','类容')
运行下面代码一定要先设置这两个缓存,因为我在高阶组件封装了公共方法,调用缓存到输入框的value里
,高阶组件返回的组件调用了这个方法
/*
* 高阶组件其实是一个函数,传进去的一个组件,返回一个新组件
* 实现不同组件中的逻辑复用,
* 将一些可以单独抽离的逻辑处理给要返回的新组件里面复用
* 然后将单独的组件,传递给新组件
* */ import React, {Component} from 'react' import ReactDOM from 'react-dom'
//高阶组件定义,里面return 返回新组件
function local(Comp,key){
class Proxy extends Component{
//constructor构造函数 定义你的状态
constructor(){
super();
this.state={data:''}
}
//钩子函数,组件渲染之前
componentWillMount(){
//取缓存值
let data=localStorage.getItem(key);
this.setState({data})
}
handBlur=(event)=>{
//获取当前标签的value
let data=event.target.value;
localStorage.setItem(key,data);
} render(){
//Comp是传入进来的组件
return(
<Comp handBlur={this.handBlur} data={this.state.data}/>
)
}
}
return Proxy
}
//定义你的单独组件
function Input(props) {
return <input type="text" defaultValue={props.data} onBlur={props.handBlur}/>
}
function Textareas(props) {
return <textarea defaultValue={props.data}></textarea>
}
function Div() {
return <div>111</div>
}
//调用高阶函数,返回新的组件
let LocalInput=local(Input,'username')
let LocalTextareas=local(Textareas,'content')
let LocalDiv=local(Div)
//要渲染的总组件
class From extends Component {
render() {
return (
<div>
<form>
用户名 <LocalInput/>
类容 <LocalTextareas/>
<LocalDiv></LocalDiv>
</form>
</div>
)
}
}
ReactDOM.render(<From></From>,document.querySelector("#root"))
react.js 高阶组件----很简单的实例理解高阶组件思想的更多相关文章
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
- js图片拖放原理(很简单,不是框架,入门基础)
<html> <meta> <script src='jquery-1.8.3.min.js'></script> <script> /* ...
- createjs easal.js制作了一个很简单的链路图
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- React.js 小书 Lesson24 - PropTypes 和组件参数验证
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson24 转载请注明出处,保留原文链接和作者信息. 我们来了到了一个非常尴尬的章节,很多初学的朋友 ...
- React.js 小书 Lesson11 - 配置组件的 props
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson11 转载请注明出处,保留原文链接和作者信息. 组件是相互独立.可复用的单元,一个组件可能在不 ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- 【React.js小书】动手实现 React-redux(五):Provider - 方志
我们要把 context 相关的代码从所有业务组件中清除出去,现在的代码里面还有一个地方是被污染的.那就是 src/index.js 里面的 Index: 1234567891011121314151 ...
- 13个精选的React JS框架
如果你正在使用 React.js 或 React Native 创建用户界面,可以试一试本文推荐的这些框架. React.js 和 React Native 是流行的用户界面(UI)开发平台,且都是开 ...
- React.js - 入门
React.js - 第1天 1. React简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 ...
随机推荐
- Jenkins视图使用--添加删除视图
job建立的特别多的时候,我们可能不太容易找到自己的某个job,这时,我们就可以在Jenkins中建立视图.job的视图类似于我们电脑上的文件夹.可以通过一些过滤规则,将已经建好的job过滤到视图中, ...
- python工具之exccel模板生成报表
from Db import Db from log import log import xlwt import xlrd from xlutils.copy import copy import s ...
- MyBatis -- 必知必会
MyBatis的前身是Apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis.201 ...
- 谈谈对Android中的消息机制的理解
Android中的消息机制主要由Handler.MessageQueue.Looper三个类组成,他们的主要作用是 Handler负责发送.处理Message MessageQueue负责维护Mess ...
- Js学习文件上传
// 文件上传 jQuery(function() { var $ = jQuery, $list = $('#thelist'), $btn = $('#ctlBtn'), state = 'pen ...
- Win10 系统安装Sql Server2008 R2 数据库遇到的问题及解决办法总结!
1.开始安装时,提示要先安装 “.NET Framework 3.5(包括.NET 2.0和3.0)”,之前已经下载好.NET Framework 3.5 sp1,安装时还是提示要先安装 “.NET ...
- TFS强制删除离职人员签出锁定项的方法(转)
项目组一哥们走的时候以独占方式迁出了文件,现在其他人都无法修改,管理员似乎也无法将文件解除.经过摸索,找到了一种暴力的方法——直接改TFS数据库.虽然暴力,却能实实在在地解决这个问题. 步骤: 1 ...
- 计数器:counter
组成:2属性,1方法 属性1: counter-reset 命名 属性2: counter-increment 启动/自增 方法 : counter()/counters() 调用方法 1.计数器 命 ...
- 微信小程序---协同工作和发布
(1)协同开发和发布 在中大型的公司里,人员的分工非常仔细,一般会有不同岗位角色的员工同时参与同一个小程序项目.为此,小程序平台设计了不同的权限管理使得项目管理者可以更加高效管理整个团队的协同工作. ...
- SoapUI对于Json数据进行属性值获取与传递
SoapUI的Property Transfer功能可以很好地对接口请求返回的数据进行参数属性获取与传递,但对于Json数据,SoapUI会把数据格式先转换成XML格式,但实际情况却是,转换后的XML ...