码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-09-26 19:31:52      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:用户名   不同   stat   blur   rom   type   select   class   一个   

/*
* 高阶组件其实是一个函数,传进去的一个组件,返回一个新组件
* 实现不同组件中的逻辑复用,
* 将一些可以单独抽离的逻辑处理给要返回的新组件里面复用
* 然后将单独的组件,传递给新组件
* */

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)=>{
           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 高阶组件----很简单的实例理解高阶组件思想

标签:用户名   不同   stat   blur   rom   type   select   class   一个   

原文地址:http://www.cnblogs.com/null11/p/7597890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!