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"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM